diff --git a/eng/.docsettings.yml b/eng/.docsettings.yml index 861b1db6be21..103fdb6a8b86 100644 --- a/eng/.docsettings.yml +++ b/eng/.docsettings.yml @@ -49,6 +49,7 @@ known_content_issues: - ['sdk/synapse/azure-synapse-artifacts/README.md', '#4554'] - ['sdk/synapse/azure-synapse-nspkg/README.md', '#4554'] - ['sdk/anomalydetector/azure-ai-anomalydetector/README.md', '#4554'] + - ['sdk/metricsadvisor/azure-ai-metricsadvisor/README.md', '#4554'] - ['sdk/applicationinsights/azure-applicationinsights/README.md', '#4554'] - ['sdk/batch/azure-batch/README.md', '#4554'] - ['sdk/cognitiveservices/azure-cognitiveservices-anomalydetector/README.md', '#4554'] diff --git a/eng/tox/allowed_pylint_failures.py b/eng/tox/allowed_pylint_failures.py index e9505fee9cf9..6dbd4075a3e1 100644 --- a/eng/tox/allowed_pylint_failures.py +++ b/eng/tox/allowed_pylint_failures.py @@ -47,4 +47,5 @@ "azure-synapse-accesscontrol", "azure-synapse-nspkg", "azure-ai-anomalydetector", + "azure-ai-metricsadvisor", ] diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/CHANGELOG.md b/sdk/metricsadvisor/azure-ai-metricsadvisor/CHANGELOG.md new file mode 100644 index 000000000000..ff7212600d5e --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/CHANGELOG.md @@ -0,0 +1,4 @@ +# Release History + +## 1.0.0b1 (Unreleased) + diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/MANIFEST.in b/sdk/metricsadvisor/azure-ai-metricsadvisor/MANIFEST.in new file mode 100644 index 000000000000..ded513877297 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/MANIFEST.in @@ -0,0 +1,5 @@ +recursive-include tests *.py +recursive-include samples *.py *.md +include *.md +include azure/__init__.py +include azure/ai/__init__.py diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/README.md b/sdk/metricsadvisor/azure-ai-metricsadvisor/README.md new file mode 100644 index 000000000000..1093abf6bb97 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/README.md @@ -0,0 +1,438 @@ +# Azure Metrics Advisor client library for Python +Metrics Advisor is a scalable real-time time series monitoring, alerting, and root cause analysis platform. + +[Source code]() | [Package (Pypi)][package] | [API reference documentation]() | [Product documentation][ma_docs] + +## Getting started + +### Install the package + +Install the Azure Metrics Advisor client library for Python with pip: + +```commandline +pip install azure-ai-metricsadvisor --pre +``` + +### Prerequisites + +* Python 2.7, or 3.5 or later is required to use this package. +* You need an [Azure subscription][azure_sub], and a [Metrics Advisor serivce][ma_service] to use this package. + +### Authenticate the client + +You will need two keys to authenticate the client: + +The subscription key to your Metrics Advisor resource. You can find this in the Keys and Endpoint section of your resource in the Azure portal. +The API key for your Metrics Advisor instance. You can find this in the web portal for Metrics Advisor, in API keys on the left navigation menu. + +We can use the keys to create a new `MetricsAdvisorClient` or `MetricsAdvisorAdministrationClient`. + +```py +import os +from azure.ai.metricsadvisor import ( + MetricsAdvisorKeyCredential, + MetricsAdvisorClient, + MetricsAdvisorAdministrationClient, +) + +service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") +subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") +api_key = os.getenv("METRICS_ADVISOR_API_KEY") + +client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + +admin_client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) +``` + +## Key concepts + +### DataFeed + +A `DataFeed` is what Metrics Advisor ingests from your data source, such as Cosmos DB or a SQL server. A data feed contains rows of: + +- timestamps +- zero or more dimensions +- one or more measures. + +### Metric + +A `Metric` is a quantifiable measure that is used to monitor and assess the status of a specific business process. It can be a combination of multiple time series values divided into dimensions. For example a web health metric might contain dimensions for user count and the en-us market. + +### AnomalyDetectionConfiguration + +`AnomalyDetectionConfiguration` is required for every time series, and determines whether a point in the time series is an anomaly. + +### Anomaly & Incident + +After a detection configuration is applied to metrics, `Incident`s are generated whenever any series within it has an `Anomaly`. + +### Alert + +You can configure which anomalies should trigger an `Alert`. You can set multiple alerts with different settings. For example, you could create an alert for anomalies with lower business impact, and another for more important alerts. + +### Hook + +Metrics Advisor lets you create and subscribe to real-time alerts. These alerts are sent over the internet, using a `Hook`. + +## Examples + +- [Add a data feed from a sample or data source](#add-a-data-feed-from-a-sample-or-data-source) +- [Check ingestion status](#check-ingestion-status) +- [Configure anomaly detection configuration](#configure-anomaly-detection-configuration) +- [Configure alert configuration](#configure-alert-configuration) +- [Query anomaly detection results](#query-anomaly-detection-results) + +### Add a data feed from a sample or data source + +```py +from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient +from azure.ai.metricsadvisor.models import ( + SQLServerDataFeed, + DataFeedSchema, + Metric, + Dimension, + DataFeedOptions, + DataFeedRollupSettings, + DataFeedMissingDataPointFillSettings + ) + +service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") +subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") +api_key = os.getenv("METRICS_ADVISOR_API_KEY") +sql_server_connection_string = os.getenv("METRICS_ADVISOR_SQL_SERVER_CONNECTION_STRING") +query = os.getenv("METRICS_ADVISOR_SQL_SERVER_QUERY") + +client = MetricsAdvisorAdministrationClient( + service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key) +) + +data_feed = client.create_data_feed( + name="My data feed", + source=SQLServerDataFeed( + connection_string=sql_server_connection_string, + query=query, + ), + granularity="Daily", + schema=DataFeedSchema( + metrics=[ + Metric(name="cost", display_name="Cost"), + Metric(name="revenue", display_name="Revenue") + ], + dimensions=[ + Dimension(name="category", display_name="Category"), + Dimension(name="city", display_name="City") + ], + timestamp_column="Timestamp" + ), + ingestion_settings=datetime.datetime(2019, 10, 1), + options=DataFeedOptions( + data_feed_description="cost/revenue data feed", + rollup_settings=DataFeedRollupSettings( + rollup_type="AutoRollup", + rollup_method="Sum", + rollup_identification_value="__CUSTOM_SUM__" + ), + missing_data_point_fill_settings=DataFeedMissingDataPointFillSettings( + fill_type="SmartFilling" + ), + access_mode="Private" + ) +) + +return data_feed +``` + +### Check ingestion status + +```py +import datetime +from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + +service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") +subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") +api_key = os.getenv("METRICS_ADVISOR_API_KEY") +data_feed_id = os.getenv("METRICS_ADVISOR_DATA_FEED_ID") + +client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key) +) + +ingestion_status = client.list_data_feed_ingestion_status( + data_feed_id, + datetime.datetime(2020, 9, 20), + datetime.datetime(2020, 9, 25) +) +for status in ingestion_status: + print("Timestamp: {}".format(status.timestamp)) + print("Status: {}".format(status.status)) + print("Message: {}\n".format(status.message)) +``` + +### Configure anomaly detection configuration +```py +from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient +from azure.ai.metricsadvisor.models import ( + ChangeThresholdCondition, + HardThresholdCondition, + SmartDetectionCondition, + SuppressCondition, + MetricDetectionCondition, +) + +service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") +subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") +api_key = os.getenv("METRICS_ADVISOR_API_KEY") +metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID") + +client = MetricsAdvisorAdministrationClient( + service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key) +) + +change_threshold_condition = ChangeThresholdCondition( + anomaly_detector_direction="Both", + change_percentage=20, + shift_point=10, + within_range=True, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) +) +hard_threshold_condition = HardThresholdCondition( + anomaly_detector_direction="Up", + upper_bound=100, + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) +) +smart_detection_condition = SmartDetectionCondition( + anomaly_detector_direction="Up", + sensitivity=10, + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) +) + +detection_config = client.create_metric_anomaly_detection_configuration( + name="my_detection_config", + metric_id=metric_id, + description="anomaly detection config for metric", + whole_series_detection_condition=MetricDetectionCondition( + cross_conditions_operator="OR", + change_threshold_condition=change_threshold_condition, + hard_threshold_condition=hard_threshold_condition, + smart_detection_condition=smart_detection_condition + ) +) + +return detection_config +``` + +### Configure alert configuration + +```py +from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient +from azure.ai.metricsadvisor.models import ( + MetricAlertConfiguration, + MetricAnomalyAlertScope, + TopNGroupScope, + MetricAnomalyAlertConditions, + SeverityCondition, + MetricBoundaryCondition, + MetricAnomalyAlertSnoozeCondition +) +service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") +subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") +api_key = os.getenv("METRICS_ADVISOR_API_KEY") +anomaly_detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID") +hook_id = os.getenv("METRICS_ADVISOR_HOOK_ID") + +client = MetricsAdvisorAdministrationClient( + service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key) +) + +alert_config = client.create_anomaly_alert_configuration( + name="my alert config", + description="alert config description", + cross_metrics_operator="AND", + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=anomaly_detection_configuration_id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ), + MetricAlertConfiguration( + detection_configuration_id=anomaly_detection_configuration_id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=10, + period=5, + min_top_count=5 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Up", + upper=50 + ) + ), + alert_snooze_condition=MetricAnomalyAlertSnoozeCondition( + auto_snooze=2, + snooze_scope="Metric", + only_for_successive=True + ) + ), + ], + hook_ids=[hook_id] +) + +return alert_config +``` + +### Query anomaly detection results + +```py +import datetime +from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorClient + +service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") +subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") +api_key = os.getenv("METRICS_ADVISOR_API_KEY") + +client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key) +) + +results = client.list_alerts_for_alert_configuration( + alert_configuration_id=alert_config_id, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + time_mode="AnomalyTime", +) +for result in results: + print("Alert id: {}".format(result.id)) + print("Create on: {}".format(result.created_on)) + +service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") +subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") +api_key = os.getenv("METRICS_ADVISOR_API_KEY") +alert_id = os.getenv("METRICS_ADVISOR_ALERT_ID") + +client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key) +) + +results = client.list_anomalies_for_alert( + alert_configuration_id=alert_config_id, + alert_id=alert_id, +) +for result in results: + print("Create on: {}".format(result.created_on)) + print("Severity: {}".format(result.severity)) + print("Status: {}".format(result.status)) +``` + +### Async APIs + +This library includes a complete async API supported on Python 3.5+. To use it, you must +first install an async transport, such as [aiohttp](https://pypi.org/project/aiohttp/). +See +[azure-core documentation](https://github.com/Azure/azure-sdk-for-python/blob/master/sdk/core/azure-core/README.md#transport) +for more information. + + +```py +from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential +from azure.ai.metricsadvisor.aio import MetricsAdvisorClient, MetricsAdvisorAdministrationClient + +client = MetricsAdvisorClient( + service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key) +) + +admin_client = MetricsAdvisorAdministrationClient( + service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key) +) +``` + +## Troubleshooting + +### General + +The Azure Metrics Advisor clients will raise exceptions defined in [Azure Core][azure_core]. + +### Logging + +This library uses the standard [logging][python_logging] library for logging. +Basic information about HTTP sessions (URLs, headers, etc.) is logged at INFO +level. + +Detailed DEBUG level logging, including request/response bodies and unredacted +headers, can be enabled on a client with the `logging_enable` keyword argument: +```python +import sys +import logging +from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorClient + +# Create a logger for the 'azure' SDK +logger = logging.getLogger('azure') +logger.setLevel(logging.DEBUG) + +# Configure a console output +handler = logging.StreamHandler(stream=sys.stdout) +logger.addHandler(handler) + +# This client will log detailed information about its HTTP sessions, at DEBUG level +client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key), + logging_enable=True +) + +``` + +## Next steps + +### More sample code + + For more details see the [samples README](https://github.com/Azure/azure-sdk-for-python-pr/tree/feature/metricsadvisor/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/README.md). + +## Contributing + +This project welcomes contributions and suggestions. Most contributions require +you to agree to a Contributor License Agreement (CLA) declaring that you have +the right to, and actually do, grant us the rights to use your contribution. For +details, visit [cla.microsoft.com][cla]. + +This project has adopted the [Microsoft Open Source Code of Conduct][code_of_conduct]. +For more information see the [Code of Conduct FAQ][coc_faq] +or contact [opencode@microsoft.com][coc_contact] with any +additional questions or comments. + + +[ma_docs]: https://aka.ms/azsdk/python/metricsadvisor/docs +[azure_cli]: https://docs.microsoft.com/cli/azure +[azure_sub]: https://azure.microsoft.com/free/ +[package]: https://pypi.org/ +[ma_service]: https://go.microsoft.com/fwlink/?linkid=2142156 +[python_logging]: https://docs.python.org/3.5/library/logging.html + +[cla]: https://cla.microsoft.com +[code_of_conduct]: https://opensource.microsoft.com/codeofconduct/ +[coc_faq]: https://opensource.microsoft.com/codeofconduct/faq/ +[coc_contact]: mailto:opencode@microsoft.com \ No newline at end of file diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/__init__.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/__init__.py new file mode 100644 index 000000000000..69e3be50dac4 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/__init__.py @@ -0,0 +1 @@ +__path__ = __import__('pkgutil').extend_path(__path__, __name__) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/__init__.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/__init__.py new file mode 100644 index 000000000000..69e3be50dac4 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/__init__.py @@ -0,0 +1 @@ +__path__ = __import__('pkgutil').extend_path(__path__, __name__) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/__init__.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/__init__.py new file mode 100644 index 000000000000..5adad272a2e6 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/__init__.py @@ -0,0 +1,20 @@ +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +from ._version import VERSION +from ._metrics_advisor_client import MetricsAdvisorClient +from ._metrics_advisor_administration_client import MetricsAdvisorAdministrationClient +from ._metrics_advisor_key_credential import MetricsAdvisorKeyCredential + + +__all__ = [ + "MetricsAdvisorClient", + "MetricsAdvisorAdministrationClient", + "MetricsAdvisorKeyCredential", +] + + +__version__ = VERSION diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/__init__.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/__init__.py new file mode 100644 index 000000000000..46ede884dc73 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/__init__.py @@ -0,0 +1,16 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2 import AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2 +__all__ = ['AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2'] + +try: + from ._patch import patch_sdk # type: ignore + patch_sdk() +except ImportError: + pass diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/_azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/_azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2.py new file mode 100644 index 000000000000..578c8d011632 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/_azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2.py @@ -0,0 +1,57 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import TYPE_CHECKING + +from azure.core import PipelineClient +from msrest import Deserializer, Serializer + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any + +from ._configuration import AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2Configuration +from .operations import AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2OperationsMixin +from . import models + + +class AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2(AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2OperationsMixin): + """Azure Cognitive Service Metrics Advisor REST API (OpenAPI v2). + + :param endpoint: Supported Cognitive Services endpoints (protocol and hostname, for example: https://:code:``.cognitiveservices.azure.com). + :type endpoint: str + """ + + def __init__( + self, + endpoint, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + base_url = '{endpoint}/metricsadvisor/v1.0' + self._config = AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2Configuration(endpoint, **kwargs) + self._client = PipelineClient(base_url=base_url, config=self._config, **kwargs) + + client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} + self._serialize = Serializer(client_models) + self._serialize.client_side_validation = False + self._deserialize = Deserializer(client_models) + + + def close(self): + # type: () -> None + self._client.close() + + def __enter__(self): + # type: () -> AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2 + self._client.__enter__() + return self + + def __exit__(self, *exc_details): + # type: (Any) -> None + self._client.__exit__(*exc_details) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/_configuration.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/_configuration.py new file mode 100644 index 000000000000..7b349a754686 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/_configuration.py @@ -0,0 +1,57 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import TYPE_CHECKING + +from azure.core.configuration import Configuration +from azure.core.pipeline import policies + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any + +VERSION = "unknown" + +class AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2Configuration(Configuration): + """Configuration for AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2. + + Note that all parameters used to create this instance are saved as instance + attributes. + + :param endpoint: Supported Cognitive Services endpoints (protocol and hostname, for example: https://:code:``.cognitiveservices.azure.com). + :type endpoint: str + """ + + def __init__( + self, + endpoint, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + if endpoint is None: + raise ValueError("Parameter 'endpoint' must not be None.") + super(AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2Configuration, self).__init__(**kwargs) + + self.endpoint = endpoint + kwargs.setdefault('sdk_moniker', 'ai-metricsadvisor/{}'.format(VERSION)) + self._configure(**kwargs) + + def _configure( + self, + **kwargs # type: Any + ): + # type: (...) -> None + self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs) + self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) + self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) + self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get('http_logging_policy') or policies.HttpLoggingPolicy(**kwargs) + self.retry_policy = kwargs.get('retry_policy') or policies.RetryPolicy(**kwargs) + self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) + self.redirect_policy = kwargs.get('redirect_policy') or policies.RedirectPolicy(**kwargs) + self.authentication_policy = kwargs.get('authentication_policy') diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/aio/__init__.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/aio/__init__.py new file mode 100644 index 000000000000..3ee9a022c9b1 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/aio/__init__.py @@ -0,0 +1,10 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2 import AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2 +__all__ = ['AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2'] diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/aio/_azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/aio/_azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2.py new file mode 100644 index 000000000000..fa3983cddbc3 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/aio/_azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2.py @@ -0,0 +1,49 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import Any + +from azure.core import AsyncPipelineClient +from msrest import Deserializer, Serializer + +from ._configuration import AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2Configuration +from .operations import AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2OperationsMixin +from .. import models + + +class AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2(AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2OperationsMixin): + """Azure Cognitive Service Metrics Advisor REST API (OpenAPI v2). + + :param endpoint: Supported Cognitive Services endpoints (protocol and hostname, for example: https://:code:``.cognitiveservices.azure.com). + :type endpoint: str + """ + + def __init__( + self, + endpoint: str, + **kwargs: Any + ) -> None: + base_url = '{endpoint}/metricsadvisor/v1.0' + self._config = AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2Configuration(endpoint, **kwargs) + self._client = AsyncPipelineClient(base_url=base_url, config=self._config, **kwargs) + + client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} + self._serialize = Serializer(client_models) + self._serialize.client_side_validation = False + self._deserialize = Deserializer(client_models) + + + async def close(self) -> None: + await self._client.close() + + async def __aenter__(self) -> "AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2": + await self._client.__aenter__() + return self + + async def __aexit__(self, *exc_details) -> None: + await self._client.__aexit__(*exc_details) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/aio/_configuration.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/aio/_configuration.py new file mode 100644 index 000000000000..19f2549a0028 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/aio/_configuration.py @@ -0,0 +1,51 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import Any + +from azure.core.configuration import Configuration +from azure.core.pipeline import policies + +VERSION = "unknown" + +class AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2Configuration(Configuration): + """Configuration for AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2. + + Note that all parameters used to create this instance are saved as instance + attributes. + + :param endpoint: Supported Cognitive Services endpoints (protocol and hostname, for example: https://:code:``.cognitiveservices.azure.com). + :type endpoint: str + """ + + def __init__( + self, + endpoint: str, + **kwargs: Any + ) -> None: + if endpoint is None: + raise ValueError("Parameter 'endpoint' must not be None.") + super(AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2Configuration, self).__init__(**kwargs) + + self.endpoint = endpoint + kwargs.setdefault('sdk_moniker', 'ai-metricsadvisor/{}'.format(VERSION)) + self._configure(**kwargs) + + def _configure( + self, + **kwargs: Any + ) -> None: + self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs) + self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) + self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) + self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get('http_logging_policy') or policies.HttpLoggingPolicy(**kwargs) + self.retry_policy = kwargs.get('retry_policy') or policies.AsyncRetryPolicy(**kwargs) + self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) + self.redirect_policy = kwargs.get('redirect_policy') or policies.AsyncRedirectPolicy(**kwargs) + self.authentication_policy = kwargs.get('authentication_policy') diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/aio/operations/__init__.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/aio/operations/__init__.py new file mode 100644 index 000000000000..cbb0e496d2f9 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/aio/operations/__init__.py @@ -0,0 +1,13 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2_operations import AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2OperationsMixin + +__all__ = [ + 'AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2OperationsMixin', +] diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/aio/operations/_azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2_operations.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/aio/operations/_azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2_operations.py new file mode 100644 index 000000000000..c988fe827ebb --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/aio/operations/_azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2_operations.py @@ -0,0 +1,2952 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union +import warnings + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest + +from ... import models + +T = TypeVar('T') +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + +class AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2OperationsMixin: + + async def get_active_series_count( + self, + **kwargs + ) -> "models.UsageStats": + """Get latest usage stats. + + Get latest usage stats. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: UsageStats, or the result of cls(response) + :rtype: ~azure.ai.metricsadvisor.models.UsageStats + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.UsageStats"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.get_active_series_count.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('UsageStats', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_active_series_count.metadata = {'url': '/stats/latest'} # type: ignore + + async def get_anomaly_alerting_configuration( + self, + configuration_id: str, + **kwargs + ) -> "models.AnomalyAlertingConfiguration": + """Query a single anomaly alerting configuration. + + Query a single anomaly alerting configuration. + + :param configuration_id: anomaly alerting configuration unique id. + :type configuration_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: AnomalyAlertingConfiguration, or the result of cls(response) + :rtype: ~azure.ai.metricsadvisor.models.AnomalyAlertingConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AnomalyAlertingConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.get_anomaly_alerting_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('AnomalyAlertingConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_anomaly_alerting_configuration.metadata = {'url': '/alert/anomaly/configurations/{configurationId}'} # type: ignore + + async def update_anomaly_alerting_configuration( + self, + configuration_id: str, + body: object, + **kwargs + ) -> None: + """Update anomaly alerting configuration. + + Update anomaly alerting configuration. + + :param configuration_id: anomaly alerting configuration unique id. + :type configuration_id: str + :param body: anomaly alerting configuration. + :type body: object + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/merge-patch+json") + accept = "application/json" + + # Construct URL + url = self.update_anomaly_alerting_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'object') + body_content_kwargs['content'] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + update_anomaly_alerting_configuration.metadata = {'url': '/alert/anomaly/configurations/{configurationId}'} # type: ignore + + async def delete_anomaly_alerting_configuration( + self, + configuration_id: str, + **kwargs + ) -> None: + """Delete anomaly alerting configuration. + + Delete anomaly alerting configuration. + + :param configuration_id: anomaly alerting configuration unique id. + :type configuration_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.delete_anomaly_alerting_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + delete_anomaly_alerting_configuration.metadata = {'url': '/alert/anomaly/configurations/{configurationId}'} # type: ignore + + async def create_anomaly_alerting_configuration( + self, + body: "models.AnomalyAlertingConfiguration", + **kwargs + ) -> None: + """Create anomaly alerting configuration. + + Create anomaly alerting configuration. + + :param body: anomaly alerting configuration. + :type body: ~azure.ai.metricsadvisor.models.AnomalyAlertingConfiguration + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.create_anomaly_alerting_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'AnomalyAlertingConfiguration') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + response_headers = {} + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + if cls: + return cls(pipeline_response, None, response_headers) + + create_anomaly_alerting_configuration.metadata = {'url': '/alert/anomaly/configurations'} # type: ignore + + def get_alerts_by_anomaly_alerting_configuration( + self, + configuration_id: str, + body: "models.AlertingResultQuery", + skip: Optional[int] = None, + top: Optional[int] = None, + **kwargs + ) -> AsyncIterable["models.AlertResultList"]: + """Query alerts under anomaly alerting configuration. + + Query alerts under anomaly alerting configuration. + + :param configuration_id: anomaly alerting configuration unique id. + :type configuration_id: str + :param body: query alerting result request. + :type body: ~azure.ai.metricsadvisor.models.AlertingResultQuery + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AlertResultList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.AlertResultList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AlertResultList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_alerts_by_anomaly_alerting_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'AlertingResultQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'AlertingResultQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('AlertResultList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_alerts_by_anomaly_alerting_configuration.metadata = {'url': '/alert/anomaly/configurations/{configurationId}/alerts/query'} # type: ignore + + def get_anomalies_from_alert_by_anomaly_alerting_configuration( + self, + configuration_id: str, + alert_id: str, + skip: Optional[int] = None, + top: Optional[int] = None, + **kwargs + ) -> AsyncIterable["models.AnomalyResultList"]: + """Query anomalies under a specific alert. + + Query anomalies under a specific alert. + + :param configuration_id: anomaly alerting configuration unique id. + :type configuration_id: str + :param alert_id: alert id. + :type alert_id: str + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AnomalyResultList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.AnomalyResultList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AnomalyResultList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_anomalies_from_alert_by_anomaly_alerting_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + 'alertId': self._serialize.url("alert_id", alert_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + 'alertId': self._serialize.url("alert_id", alert_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('AnomalyResultList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_anomalies_from_alert_by_anomaly_alerting_configuration.metadata = {'url': '/alert/anomaly/configurations/{configurationId}/alerts/{alertId}/anomalies'} # type: ignore + + def get_incidents_from_alert_by_anomaly_alerting_configuration( + self, + configuration_id: str, + alert_id: str, + skip: Optional[int] = None, + top: Optional[int] = None, + **kwargs + ) -> AsyncIterable["models.IncidentResultList"]: + """Query incidents under a specific alert. + + Query incidents under a specific alert. + + :param configuration_id: anomaly alerting configuration unique id. + :type configuration_id: str + :param alert_id: alert id. + :type alert_id: str + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IncidentResultList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.IncidentResultList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.IncidentResultList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_incidents_from_alert_by_anomaly_alerting_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + 'alertId': self._serialize.url("alert_id", alert_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + 'alertId': self._serialize.url("alert_id", alert_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('IncidentResultList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_incidents_from_alert_by_anomaly_alerting_configuration.metadata = {'url': '/alert/anomaly/configurations/{configurationId}/alerts/{alertId}/incidents'} # type: ignore + + async def get_anomaly_detection_configuration( + self, + configuration_id: str, + **kwargs + ) -> "models.AnomalyDetectionConfiguration": + """Query a single anomaly detection configuration. + + Query a single anomaly detection configuration. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: AnomalyDetectionConfiguration, or the result of cls(response) + :rtype: ~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AnomalyDetectionConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.get_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('AnomalyDetectionConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}'} # type: ignore + + async def update_anomaly_detection_configuration( + self, + configuration_id: str, + body: object, + **kwargs + ) -> None: + """Update anomaly detection configuration. + + Update anomaly detection configuration. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :param body: anomaly detection configuration. + :type body: object + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/merge-patch+json") + accept = "application/json" + + # Construct URL + url = self.update_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'object') + body_content_kwargs['content'] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + update_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}'} # type: ignore + + async def delete_anomaly_detection_configuration( + self, + configuration_id: str, + **kwargs + ) -> None: + """Delete anomaly detection configuration. + + Delete anomaly detection configuration. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.delete_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + delete_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}'} # type: ignore + + async def create_anomaly_detection_configuration( + self, + body: "models.AnomalyDetectionConfiguration", + **kwargs + ) -> None: + """Create anomaly detection configuration. + + Create anomaly detection configuration. + + :param body: anomaly detection configuration. + :type body: ~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.create_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'AnomalyDetectionConfiguration') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + response_headers = {} + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + if cls: + return cls(pipeline_response, None, response_headers) + + create_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations'} # type: ignore + + def get_anomaly_alerting_configurations_by_anomaly_detection_configuration( + self, + configuration_id: str, + **kwargs + ) -> AsyncIterable["models.AnomalyAlertingConfigurationList"]: + """Query all anomaly alerting configurations for specific anomaly detection configuration. + + Query all anomaly alerting configurations for specific anomaly detection configuration. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AnomalyAlertingConfigurationList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.AnomalyAlertingConfigurationList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AnomalyAlertingConfigurationList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_anomaly_alerting_configurations_by_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('AnomalyAlertingConfigurationList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_anomaly_alerting_configurations_by_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}/alert/anomaly/configurations'} # type: ignore + + def get_series_by_anomaly_detection_configuration( + self, + configuration_id: str, + body: "models.DetectionSeriesQuery", + **kwargs + ) -> AsyncIterable["models.SeriesResultList"]: + """Query series enriched by anomaly detection. + + Query series enriched by anomaly detection. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :param body: query series detection result request. + :type body: ~azure.ai.metricsadvisor.models.DetectionSeriesQuery + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either SeriesResultList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.SeriesResultList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.SeriesResultList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_series_by_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'DetectionSeriesQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'DetectionSeriesQuery') + body_content_kwargs['content'] = body_content + request = self._client.get(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('SeriesResultList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_series_by_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}/series/query'} # type: ignore + + def get_anomalies_by_anomaly_detection_configuration( + self, + configuration_id: str, + body: "models.DetectionAnomalyResultQuery", + skip: Optional[int] = None, + top: Optional[int] = None, + **kwargs + ) -> AsyncIterable["models.AnomalyResultList"]: + """Query anomalies under anomaly detection configuration. + + Query anomalies under anomaly detection configuration. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :param body: query detection anomaly result request. + :type body: ~azure.ai.metricsadvisor.models.DetectionAnomalyResultQuery + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AnomalyResultList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.AnomalyResultList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AnomalyResultList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_anomalies_by_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'DetectionAnomalyResultQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'DetectionAnomalyResultQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('AnomalyResultList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_anomalies_by_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}/anomalies/query'} # type: ignore + + def get_dimension_of_anomalies_by_anomaly_detection_configuration( + self, + configuration_id: str, + body: "models.AnomalyDimensionQuery", + skip: Optional[int] = None, + top: Optional[int] = None, + **kwargs + ) -> AsyncIterable["models.AnomalyDimensionList"]: + """Query dimension values of anomalies. + + Query dimension values of anomalies. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :param body: query dimension values request. + :type body: ~azure.ai.metricsadvisor.models.AnomalyDimensionQuery + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AnomalyDimensionList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.AnomalyDimensionList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AnomalyDimensionList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_dimension_of_anomalies_by_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'AnomalyDimensionQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'AnomalyDimensionQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('AnomalyDimensionList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_dimension_of_anomalies_by_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}/anomalies/dimension/query'} # type: ignore + + def get_incidents_by_anomaly_detection_configuration( + self, + configuration_id: str, + body: "models.DetectionIncidentResultQuery", + top: Optional[int] = None, + **kwargs + ) -> AsyncIterable["models.IncidentResultList"]: + """Query incidents under anomaly detection configuration. + + Query incidents under anomaly detection configuration. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :param body: query detection incident result request. + :type body: ~azure.ai.metricsadvisor.models.DetectionIncidentResultQuery + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IncidentResultList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.IncidentResultList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.IncidentResultList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_incidents_by_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'DetectionIncidentResultQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'DetectionIncidentResultQuery') + body_content_kwargs['content'] = body_content + request = self._client.get(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('IncidentResultList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_incidents_by_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}/incidents/query'} # type: ignore + + def get_incidents_by_anomaly_detection_configuration_next_pages( + self, + configuration_id: str, + top: Optional[int] = None, + token: Optional[str] = None, + **kwargs + ) -> AsyncIterable["models.IncidentResultList"]: + """Query incidents under anomaly detection configuration. + + Query incidents under anomaly detection configuration. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :param top: + :type top: int + :param token: + :type token: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IncidentResultList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.IncidentResultList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.IncidentResultList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_incidents_by_anomaly_detection_configuration_next_pages.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + if token is not None: + query_parameters['$token'] = self._serialize.query("token", token, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('IncidentResultList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_incidents_by_anomaly_detection_configuration_next_pages.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}/incidents/query'} # type: ignore + + def get_root_cause_of_incident_by_anomaly_detection_configuration( + self, + configuration_id: str, + incident_id: str, + **kwargs + ) -> AsyncIterable["models.RootCauseList"]: + """Query root cause for incident. + + Query root cause for incident. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :param incident_id: incident id. + :type incident_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either RootCauseList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.RootCauseList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.RootCauseList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_root_cause_of_incident_by_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('RootCauseList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_root_cause_of_incident_by_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}/incidents/{incidentId}/rootCause'} # type: ignore + + def list_data_feeds( + self, + data_feed_name: Optional[str] = None, + data_source_type: Optional[Union[str, "models.DataSourceType"]] = None, + granularity_name: Optional[Union[str, "models.Granularity"]] = None, + status: Optional[Union[str, "models.EntityStatus"]] = None, + creator: Optional[str] = None, + skip: Optional[int] = None, + top: Optional[int] = None, + **kwargs + ) -> AsyncIterable["models.DataFeedList"]: + """List all data feeds. + + List all data feeds. + + :param data_feed_name: filter data feed by its name. + :type data_feed_name: str + :param data_source_type: filter data feed by its source type. + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :param granularity_name: filter data feed by its granularity. + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param status: filter data feed by its status. + :type status: str or ~azure.ai.metricsadvisor.models.EntityStatus + :param creator: filter data feed by its creator. + :type creator: str + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DataFeedList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.DataFeedList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.DataFeedList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.list_data_feeds.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if data_feed_name is not None: + query_parameters['dataFeedName'] = self._serialize.query("data_feed_name", data_feed_name, 'str') + if data_source_type is not None: + query_parameters['dataSourceType'] = self._serialize.query("data_source_type", data_source_type, 'str') + if granularity_name is not None: + query_parameters['granularityName'] = self._serialize.query("granularity_name", granularity_name, 'str') + if status is not None: + query_parameters['status'] = self._serialize.query("status", status, 'str') + if creator is not None: + query_parameters['creator'] = self._serialize.query("creator", creator, 'str') + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('DataFeedList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + list_data_feeds.metadata = {'url': '/dataFeeds'} # type: ignore + + async def create_data_feed( + self, + body: "models.DataFeedDetail", + **kwargs + ) -> None: + """Create a new data feed. + + Create a new data feed. + + :param body: parameters to create a data feed. + :type body: ~azure.ai.metricsadvisor.models.DataFeedDetail + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.create_data_feed.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'DataFeedDetail') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + response_headers = {} + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + if cls: + return cls(pipeline_response, None, response_headers) + + create_data_feed.metadata = {'url': '/dataFeeds'} # type: ignore + + async def get_data_feed_by_id( + self, + data_feed_id: str, + **kwargs + ) -> "models.DataFeedDetail": + """Get a data feed by its id. + + Get a data feed by its id. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DataFeedDetail, or the result of cls(response) + :rtype: ~azure.ai.metricsadvisor.models.DataFeedDetail + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.DataFeedDetail"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.get_data_feed_by_id.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'dataFeedId': self._serialize.url("data_feed_id", data_feed_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('DataFeedDetail', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_data_feed_by_id.metadata = {'url': '/dataFeeds/{dataFeedId}'} # type: ignore + + async def update_data_feed( + self, + data_feed_id: str, + body: object, + **kwargs + ) -> None: + """Update a data feed. + + Update a data feed. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :param body: parameters to update a data feed. + :type body: object + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/merge-patch+json") + accept = "application/json" + + # Construct URL + url = self.update_data_feed.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'dataFeedId': self._serialize.url("data_feed_id", data_feed_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'object') + body_content_kwargs['content'] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + update_data_feed.metadata = {'url': '/dataFeeds/{dataFeedId}'} # type: ignore + + async def delete_data_feed( + self, + data_feed_id: str, + **kwargs + ) -> None: + """Delete a data feed. + + Delete a data feed. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.delete_data_feed.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'dataFeedId': self._serialize.url("data_feed_id", data_feed_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + delete_data_feed.metadata = {'url': '/dataFeeds/{dataFeedId}'} # type: ignore + + async def get_metric_feedback( + self, + feedback_id: str, + **kwargs + ) -> "models.MetricFeedback": + """Get a metric feedback by its id. + + Get a metric feedback by its id. + + :param feedback_id: + :type feedback_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: MetricFeedback, or the result of cls(response) + :rtype: ~azure.ai.metricsadvisor.models.MetricFeedback + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.MetricFeedback"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.get_metric_feedback.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'feedbackId': self._serialize.url("feedback_id", feedback_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('MetricFeedback', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_metric_feedback.metadata = {'url': '/feedback/metric/{feedbackId}'} # type: ignore + + def list_metric_feedbacks( + self, + body: "models.MetricFeedbackFilter", + skip: Optional[int] = None, + top: Optional[int] = None, + **kwargs + ) -> AsyncIterable["models.MetricFeedbackList"]: + """List feedback on the given metric. + + List feedback on the given metric. + + :param body: metric feedback filter. + :type body: ~azure.ai.metricsadvisor.models.MetricFeedbackFilter + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either MetricFeedbackList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.MetricFeedbackList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.MetricFeedbackList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.list_metric_feedbacks.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricFeedbackFilter') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricFeedbackFilter') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('MetricFeedbackList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + list_metric_feedbacks.metadata = {'url': '/feedback/metric/query'} # type: ignore + + async def create_metric_feedback( + self, + body: "models.MetricFeedback", + **kwargs + ) -> None: + """Create a new metric feedback. + + Create a new metric feedback. + + :param body: metric feedback. + :type body: ~azure.ai.metricsadvisor.models.MetricFeedback + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.create_metric_feedback.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricFeedback') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + response_headers = {} + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + if cls: + return cls(pipeline_response, None, response_headers) + + create_metric_feedback.metadata = {'url': '/feedback/metric'} # type: ignore + + def list_hooks( + self, + hook_name: Optional[str] = None, + skip: Optional[int] = None, + top: Optional[int] = None, + **kwargs + ) -> AsyncIterable["models.HookList"]: + """List all hooks. + + List all hooks. + + :param hook_name: filter hook by its name. + :type hook_name: str + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either HookList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.HookList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.HookList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.list_hooks.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if hook_name is not None: + query_parameters['hookName'] = self._serialize.query("hook_name", hook_name, 'str') + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('HookList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + list_hooks.metadata = {'url': '/hooks'} # type: ignore + + async def create_hook( + self, + body: "models.HookInfo", + **kwargs + ) -> None: + """Create a new hook. + + Create a new hook. + + :param body: Create hook request. + :type body: ~azure.ai.metricsadvisor.models.HookInfo + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.create_hook.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'HookInfo') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + response_headers = {} + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + if cls: + return cls(pipeline_response, None, response_headers) + + create_hook.metadata = {'url': '/hooks'} # type: ignore + + async def get_hook( + self, + hook_id: str, + **kwargs + ) -> "models.HookInfo": + """Get a hook by its id. + + Get a hook by its id. + + :param hook_id: Hook unique ID. + :type hook_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: HookInfo, or the result of cls(response) + :rtype: ~azure.ai.metricsadvisor.models.HookInfo + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.HookInfo"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.get_hook.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'hookId': self._serialize.url("hook_id", hook_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('HookInfo', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_hook.metadata = {'url': '/hooks/{hookId}'} # type: ignore + + async def update_hook( + self, + hook_id: str, + body: object, + **kwargs + ) -> None: + """Update a hook. + + Update a hook. + + :param hook_id: Hook unique ID. + :type hook_id: str + :param body: Update hook request. + :type body: object + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/merge-patch+json") + accept = "application/json" + + # Construct URL + url = self.update_hook.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'hookId': self._serialize.url("hook_id", hook_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'object') + body_content_kwargs['content'] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + update_hook.metadata = {'url': '/hooks/{hookId}'} # type: ignore + + async def delete_hook( + self, + hook_id: str, + **kwargs + ) -> None: + """Delete a hook. + + Delete a hook. + + :param hook_id: Hook unique ID. + :type hook_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.delete_hook.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'hookId': self._serialize.url("hook_id", hook_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + delete_hook.metadata = {'url': '/hooks/{hookId}'} # type: ignore + + def get_data_feed_ingestion_status( + self, + data_feed_id: str, + body: "models.IngestionStatusQueryOptions", + skip: Optional[int] = None, + top: Optional[int] = None, + **kwargs + ) -> AsyncIterable["models.IngestionStatusList"]: + """Get data ingestion status by data feed. + + Get data ingestion status by data feed. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :param body: The query time range. + :type body: ~azure.ai.metricsadvisor.models.IngestionStatusQueryOptions + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IngestionStatusList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.IngestionStatusList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.IngestionStatusList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_data_feed_ingestion_status.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'dataFeedId': self._serialize.url("data_feed_id", data_feed_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'IngestionStatusQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'IngestionStatusQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('IngestionStatusList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_data_feed_ingestion_status.metadata = {'url': '/dataFeeds/{dataFeedId}/ingestionStatus/query'} # type: ignore + + async def reset_data_feed_ingestion_status( + self, + data_feed_id: str, + body: "models.IngestionProgressResetOptions", + **kwargs + ) -> None: + """Reset data ingestion status by data feed to backfill data. + + Reset data ingestion status by data feed to backfill data. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :param body: The backfill time range. + :type body: ~azure.ai.metricsadvisor.models.IngestionProgressResetOptions + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.reset_data_feed_ingestion_status.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'dataFeedId': self._serialize.url("data_feed_id", data_feed_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'IngestionProgressResetOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + reset_data_feed_ingestion_status.metadata = {'url': '/dataFeeds/{dataFeedId}/ingestionProgress/reset'} # type: ignore + + async def get_ingestion_progress( + self, + data_feed_id: str, + **kwargs + ) -> "models.DataFeedIngestionProgress": + """Get data last success ingestion job timestamp by data feed. + + Get data last success ingestion job timestamp by data feed. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DataFeedIngestionProgress, or the result of cls(response) + :rtype: ~azure.ai.metricsadvisor.models.DataFeedIngestionProgress + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.DataFeedIngestionProgress"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.get_ingestion_progress.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'dataFeedId': self._serialize.url("data_feed_id", data_feed_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('DataFeedIngestionProgress', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_ingestion_progress.metadata = {'url': '/dataFeeds/{dataFeedId}/ingestionProgress'} # type: ignore + + def get_metric_data( + self, + metric_id: str, + body: "models.MetricDataQueryOptions", + **kwargs + ) -> AsyncIterable["models.MetricDataList"]: + """Get time series data from metric. + + Get time series data from metric. + + :param metric_id: metric unique id. + :type metric_id: str + :param body: query time series data condition. + :type body: ~azure.ai.metricsadvisor.models.MetricDataQueryOptions + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either MetricDataList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.MetricDataList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.MetricDataList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_metric_data.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'metricId': self._serialize.url("metric_id", metric_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricDataQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'metricId': self._serialize.url("metric_id", metric_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricDataQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.get(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('MetricDataList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_metric_data.metadata = {'url': '/metrics/{metricId}/data/query'} # type: ignore + + def get_metric_series( + self, + metric_id: str, + body: "models.MetricSeriesQueryOptions", + skip: Optional[int] = None, + top: Optional[int] = None, + **kwargs + ) -> AsyncIterable["models.MetricSeriesList"]: + """List series (dimension combinations) from metric. + + List series (dimension combinations) from metric. + + :param metric_id: metric unique id. + :type metric_id: str + :param body: filter to query series. + :type body: ~azure.ai.metricsadvisor.models.MetricSeriesQueryOptions + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either MetricSeriesList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.MetricSeriesList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.MetricSeriesList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_metric_series.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'metricId': self._serialize.url("metric_id", metric_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricSeriesQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricSeriesQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('MetricSeriesList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_metric_series.metadata = {'url': '/metrics/{metricId}/series/query'} # type: ignore + + def get_metric_dimension( + self, + metric_id: str, + body: "models.MetricDimensionQueryOptions", + skip: Optional[int] = None, + top: Optional[int] = None, + **kwargs + ) -> AsyncIterable["models.MetricDimensionList"]: + """List dimension from certain metric. + + List dimension from certain metric. + + :param metric_id: metric unique id. + :type metric_id: str + :param body: query dimension option. + :type body: ~azure.ai.metricsadvisor.models.MetricDimensionQueryOptions + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either MetricDimensionList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.MetricDimensionList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.MetricDimensionList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_metric_dimension.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'metricId': self._serialize.url("metric_id", metric_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricDimensionQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricDimensionQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('MetricDimensionList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_metric_dimension.metadata = {'url': '/metrics/{metricId}/dimension/query'} # type: ignore + + def get_anomaly_detection_configurations_by_metric( + self, + metric_id: str, + **kwargs + ) -> AsyncIterable["models.AnomalyDetectionConfigurationList"]: + """Query all anomaly detection configurations for specific metric. + + Query all anomaly detection configurations for specific metric. + + :param metric_id: metric unique id. + :type metric_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AnomalyDetectionConfigurationList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.AnomalyDetectionConfigurationList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AnomalyDetectionConfigurationList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_anomaly_detection_configurations_by_metric.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'metricId': self._serialize.url("metric_id", metric_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'metricId': self._serialize.url("metric_id", metric_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('AnomalyDetectionConfigurationList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_anomaly_detection_configurations_by_metric.metadata = {'url': '/metrics/{metricId}/enrichment/anomalyDetection/configurations'} # type: ignore + + def get_enrichment_status_by_metric( + self, + metric_id: str, + body: "models.EnrichmentStatusQueryOption", + skip: Optional[int] = None, + top: Optional[int] = None, + **kwargs + ) -> AsyncIterable["models.EnrichmentStatusList"]: + """Query anomaly detection status. + + Query anomaly detection status. + + :param metric_id: metric unique id. + :type metric_id: str + :param body: query options. + :type body: ~azure.ai.metricsadvisor.models.EnrichmentStatusQueryOption + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either EnrichmentStatusList or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.EnrichmentStatusList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.EnrichmentStatusList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_enrichment_status_by_metric.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'metricId': self._serialize.url("metric_id", metric_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'EnrichmentStatusQueryOption') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'EnrichmentStatusQueryOption') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('EnrichmentStatusList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + get_enrichment_status_by_metric.metadata = {'url': '/metrics/{metricId}/status/enrichment/anomalyDetection/query'} # type: ignore diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/models/__init__.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/models/__init__.py new file mode 100644 index 000000000000..16881cbd60a9 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/models/__init__.py @@ -0,0 +1,449 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +try: + from ._models_py3 import AlertResult + from ._models_py3 import AlertResultList + from ._models_py3 import AlertSnoozeCondition + from ._models_py3 import AlertingResultQuery + from ._models_py3 import AnomalyAlertingConfiguration + from ._models_py3 import AnomalyAlertingConfigurationList + from ._models_py3 import AnomalyAlertingConfigurationPatch + from ._models_py3 import AnomalyDetectionConfiguration + from ._models_py3 import AnomalyDetectionConfigurationList + from ._models_py3 import AnomalyDetectionConfigurationPatch + from ._models_py3 import AnomalyDimensionList + from ._models_py3 import AnomalyDimensionQuery + from ._models_py3 import AnomalyFeedback + from ._models_py3 import AnomalyFeedbackValue + from ._models_py3 import AnomalyProperty + from ._models_py3 import AnomalyResult + from ._models_py3 import AnomalyResultList + from ._models_py3 import AzureApplicationInsightsDataFeed + from ._models_py3 import AzureApplicationInsightsDataFeedPatch + from ._models_py3 import AzureApplicationInsightsParameter + from ._models_py3 import AzureBlobDataFeed + from ._models_py3 import AzureBlobDataFeedPatch + from ._models_py3 import AzureBlobParameter + from ._models_py3 import AzureCosmosDBDataFeed + from ._models_py3 import AzureCosmosDBDataFeedPatch + from ._models_py3 import AzureCosmosDBParameter + from ._models_py3 import AzureDataExplorerDataFeed + from ._models_py3 import AzureDataExplorerDataFeedPatch + from ._models_py3 import AzureDataLakeStorageGen2DataFeed + from ._models_py3 import AzureDataLakeStorageGen2DataFeedPatch + from ._models_py3 import AzureDataLakeStorageGen2Parameter + from ._models_py3 import AzureTableDataFeed + from ._models_py3 import AzureTableDataFeedPatch + from ._models_py3 import AzureTableParameter + from ._models_py3 import ChangePointFeedback + from ._models_py3 import ChangePointFeedbackValue + from ._models_py3 import ChangeThresholdCondition + from ._models_py3 import CommentFeedback + from ._models_py3 import CommentFeedbackValue + from ._models_py3 import DataFeedDetail + from ._models_py3 import DataFeedDetailPatch + from ._models_py3 import DataFeedIngestionProgress + from ._models_py3 import DataFeedList + from ._models_py3 import DetectionAnomalyFilterCondition + from ._models_py3 import DetectionAnomalyResultQuery + from ._models_py3 import DetectionIncidentFilterCondition + from ._models_py3 import DetectionIncidentResultQuery + from ._models_py3 import DetectionSeriesQuery + from ._models_py3 import Dimension + from ._models_py3 import DimensionGroupConfiguration + from ._models_py3 import DimensionGroupIdentity + from ._models_py3 import ElasticsearchDataFeed + from ._models_py3 import ElasticsearchDataFeedPatch + from ._models_py3 import ElasticsearchParameter + from ._models_py3 import EmailHookInfo + from ._models_py3 import EmailHookInfoPatch + from ._models_py3 import EmailHookParameter + from ._models_py3 import EnrichmentStatus + from ._models_py3 import EnrichmentStatusList + from ._models_py3 import EnrichmentStatusQueryOption + from ._models_py3 import ErrorCode + from ._models_py3 import FeedbackDimensionFilter + from ._models_py3 import HardThresholdCondition + from ._models_py3 import HookInfo + from ._models_py3 import HookInfoPatch + from ._models_py3 import HookList + from ._models_py3 import HttpRequestDataFeed + from ._models_py3 import HttpRequestDataFeedPatch + from ._models_py3 import HttpRequestParameter + from ._models_py3 import IncidentProperty + from ._models_py3 import IncidentResult + from ._models_py3 import IncidentResultList + from ._models_py3 import InfluxDBDataFeed + from ._models_py3 import InfluxDBDataFeedPatch + from ._models_py3 import InfluxDBParameter + from ._models_py3 import IngestionProgressResetOptions + from ._models_py3 import IngestionStatus + from ._models_py3 import IngestionStatusList + from ._models_py3 import IngestionStatusQueryOptions + from ._models_py3 import Metric + from ._models_py3 import MetricAlertingConfiguration + from ._models_py3 import MetricDataItem + from ._models_py3 import MetricDataList + from ._models_py3 import MetricDataQueryOptions + from ._models_py3 import MetricDimensionList + from ._models_py3 import MetricDimensionQueryOptions + from ._models_py3 import MetricFeedback + from ._models_py3 import MetricFeedbackFilter + from ._models_py3 import MetricFeedbackList + from ._models_py3 import MetricSeriesItem + from ._models_py3 import MetricSeriesList + from ._models_py3 import MetricSeriesQueryOptions + from ._models_py3 import MongoDBDataFeed + from ._models_py3 import MongoDBDataFeedPatch + from ._models_py3 import MongoDBParameter + from ._models_py3 import MySqlDataFeed + from ._models_py3 import MySqlDataFeedPatch + from ._models_py3 import PeriodFeedback + from ._models_py3 import PeriodFeedbackValue + from ._models_py3 import PostgreSqlDataFeed + from ._models_py3 import PostgreSqlDataFeedPatch + from ._models_py3 import RootCause + from ._models_py3 import RootCauseList + from ._models_py3 import SQLServerDataFeed + from ._models_py3 import SQLServerDataFeedPatch + from ._models_py3 import SeriesConfiguration + from ._models_py3 import SeriesIdentity + from ._models_py3 import SeriesResult + from ._models_py3 import SeriesResultList + from ._models_py3 import SeverityCondition + from ._models_py3 import SeverityFilterCondition + from ._models_py3 import SmartDetectionCondition + from ._models_py3 import SqlSourceParameter + from ._models_py3 import SuppressCondition + from ._models_py3 import TopNGroupScope + from ._models_py3 import UsageStats + from ._models_py3 import ValueCondition + from ._models_py3 import WebhookHookInfo + from ._models_py3 import WebhookHookInfoPatch + from ._models_py3 import WebhookHookParameter + from ._models_py3 import WholeMetricConfiguration +except (SyntaxError, ImportError): + from ._models import AlertResult # type: ignore + from ._models import AlertResultList # type: ignore + from ._models import AlertSnoozeCondition # type: ignore + from ._models import AlertingResultQuery # type: ignore + from ._models import AnomalyAlertingConfiguration # type: ignore + from ._models import AnomalyAlertingConfigurationList # type: ignore + from ._models import AnomalyAlertingConfigurationPatch # type: ignore + from ._models import AnomalyDetectionConfiguration # type: ignore + from ._models import AnomalyDetectionConfigurationList # type: ignore + from ._models import AnomalyDetectionConfigurationPatch # type: ignore + from ._models import AnomalyDimensionList # type: ignore + from ._models import AnomalyDimensionQuery # type: ignore + from ._models import AnomalyFeedback # type: ignore + from ._models import AnomalyFeedbackValue # type: ignore + from ._models import AnomalyProperty # type: ignore + from ._models import AnomalyResult # type: ignore + from ._models import AnomalyResultList # type: ignore + from ._models import AzureApplicationInsightsDataFeed # type: ignore + from ._models import AzureApplicationInsightsDataFeedPatch # type: ignore + from ._models import AzureApplicationInsightsParameter # type: ignore + from ._models import AzureBlobDataFeed # type: ignore + from ._models import AzureBlobDataFeedPatch # type: ignore + from ._models import AzureBlobParameter # type: ignore + from ._models import AzureCosmosDBDataFeed # type: ignore + from ._models import AzureCosmosDBDataFeedPatch # type: ignore + from ._models import AzureCosmosDBParameter # type: ignore + from ._models import AzureDataExplorerDataFeed # type: ignore + from ._models import AzureDataExplorerDataFeedPatch # type: ignore + from ._models import AzureDataLakeStorageGen2DataFeed # type: ignore + from ._models import AzureDataLakeStorageGen2DataFeedPatch # type: ignore + from ._models import AzureDataLakeStorageGen2Parameter # type: ignore + from ._models import AzureTableDataFeed # type: ignore + from ._models import AzureTableDataFeedPatch # type: ignore + from ._models import AzureTableParameter # type: ignore + from ._models import ChangePointFeedback # type: ignore + from ._models import ChangePointFeedbackValue # type: ignore + from ._models import ChangeThresholdCondition # type: ignore + from ._models import CommentFeedback # type: ignore + from ._models import CommentFeedbackValue # type: ignore + from ._models import DataFeedDetail # type: ignore + from ._models import DataFeedDetailPatch # type: ignore + from ._models import DataFeedIngestionProgress # type: ignore + from ._models import DataFeedList # type: ignore + from ._models import DetectionAnomalyFilterCondition # type: ignore + from ._models import DetectionAnomalyResultQuery # type: ignore + from ._models import DetectionIncidentFilterCondition # type: ignore + from ._models import DetectionIncidentResultQuery # type: ignore + from ._models import DetectionSeriesQuery # type: ignore + from ._models import Dimension # type: ignore + from ._models import DimensionGroupConfiguration # type: ignore + from ._models import DimensionGroupIdentity # type: ignore + from ._models import ElasticsearchDataFeed # type: ignore + from ._models import ElasticsearchDataFeedPatch # type: ignore + from ._models import ElasticsearchParameter # type: ignore + from ._models import EmailHookInfo # type: ignore + from ._models import EmailHookInfoPatch # type: ignore + from ._models import EmailHookParameter # type: ignore + from ._models import EnrichmentStatus # type: ignore + from ._models import EnrichmentStatusList # type: ignore + from ._models import EnrichmentStatusQueryOption # type: ignore + from ._models import ErrorCode # type: ignore + from ._models import FeedbackDimensionFilter # type: ignore + from ._models import HardThresholdCondition # type: ignore + from ._models import HookInfo # type: ignore + from ._models import HookInfoPatch # type: ignore + from ._models import HookList # type: ignore + from ._models import HttpRequestDataFeed # type: ignore + from ._models import HttpRequestDataFeedPatch # type: ignore + from ._models import HttpRequestParameter # type: ignore + from ._models import IncidentProperty # type: ignore + from ._models import IncidentResult # type: ignore + from ._models import IncidentResultList # type: ignore + from ._models import InfluxDBDataFeed # type: ignore + from ._models import InfluxDBDataFeedPatch # type: ignore + from ._models import InfluxDBParameter # type: ignore + from ._models import IngestionProgressResetOptions # type: ignore + from ._models import IngestionStatus # type: ignore + from ._models import IngestionStatusList # type: ignore + from ._models import IngestionStatusQueryOptions # type: ignore + from ._models import Metric # type: ignore + from ._models import MetricAlertingConfiguration # type: ignore + from ._models import MetricDataItem # type: ignore + from ._models import MetricDataList # type: ignore + from ._models import MetricDataQueryOptions # type: ignore + from ._models import MetricDimensionList # type: ignore + from ._models import MetricDimensionQueryOptions # type: ignore + from ._models import MetricFeedback # type: ignore + from ._models import MetricFeedbackFilter # type: ignore + from ._models import MetricFeedbackList # type: ignore + from ._models import MetricSeriesItem # type: ignore + from ._models import MetricSeriesList # type: ignore + from ._models import MetricSeriesQueryOptions # type: ignore + from ._models import MongoDBDataFeed # type: ignore + from ._models import MongoDBDataFeedPatch # type: ignore + from ._models import MongoDBParameter # type: ignore + from ._models import MySqlDataFeed # type: ignore + from ._models import MySqlDataFeedPatch # type: ignore + from ._models import PeriodFeedback # type: ignore + from ._models import PeriodFeedbackValue # type: ignore + from ._models import PostgreSqlDataFeed # type: ignore + from ._models import PostgreSqlDataFeedPatch # type: ignore + from ._models import RootCause # type: ignore + from ._models import RootCauseList # type: ignore + from ._models import SQLServerDataFeed # type: ignore + from ._models import SQLServerDataFeedPatch # type: ignore + from ._models import SeriesConfiguration # type: ignore + from ._models import SeriesIdentity # type: ignore + from ._models import SeriesResult # type: ignore + from ._models import SeriesResultList # type: ignore + from ._models import SeverityCondition # type: ignore + from ._models import SeverityFilterCondition # type: ignore + from ._models import SmartDetectionCondition # type: ignore + from ._models import SqlSourceParameter # type: ignore + from ._models import SuppressCondition # type: ignore + from ._models import TopNGroupScope # type: ignore + from ._models import UsageStats # type: ignore + from ._models import ValueCondition # type: ignore + from ._models import WebhookHookInfo # type: ignore + from ._models import WebhookHookInfoPatch # type: ignore + from ._models import WebhookHookParameter # type: ignore + from ._models import WholeMetricConfiguration # type: ignore + +from ._azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2_enums import ( + AnomalyAlertingConfigurationCrossMetricsOperator, + AnomalyAlertingConfigurationPatchCrossMetricsOperator, + AnomalyDetectorDirection, + AnomalyPropertyAnomalyStatus, + AnomalyScope, + AnomalyValue, + ChangePointValue, + DataFeedDetailPatchDataSourceType, + DataFeedDetailPatchFillMissingPointType, + DataFeedDetailPatchNeedRollup, + DataFeedDetailPatchRollUpMethod, + DataFeedDetailPatchStatus, + DataFeedDetailPatchViewMode, + DataFeedDetailRollUpMethod, + DataFeedDetailStatus, + DataSourceType, + DimensionGroupConfigurationConditionOperator, + Direction, + EntityStatus, + FeedbackQueryTimeMode, + FeedbackType, + FillMissingPointType, + Granularity, + HookInfoPatchHookType, + HookType, + IncidentPropertyIncidentStatus, + IngestionStatusType, + NeedRollupEnum, + PeriodType, + SeriesConfigurationConditionOperator, + Severity, + SnoozeScope, + TimeMode, + ViewMode, + WholeMetricConfigurationConditionOperator, +) + +__all__ = [ + 'AlertResult', + 'AlertResultList', + 'AlertSnoozeCondition', + 'AlertingResultQuery', + 'AnomalyAlertingConfiguration', + 'AnomalyAlertingConfigurationList', + 'AnomalyAlertingConfigurationPatch', + 'AnomalyDetectionConfiguration', + 'AnomalyDetectionConfigurationList', + 'AnomalyDetectionConfigurationPatch', + 'AnomalyDimensionList', + 'AnomalyDimensionQuery', + 'AnomalyFeedback', + 'AnomalyFeedbackValue', + 'AnomalyProperty', + 'AnomalyResult', + 'AnomalyResultList', + 'AzureApplicationInsightsDataFeed', + 'AzureApplicationInsightsDataFeedPatch', + 'AzureApplicationInsightsParameter', + 'AzureBlobDataFeed', + 'AzureBlobDataFeedPatch', + 'AzureBlobParameter', + 'AzureCosmosDBDataFeed', + 'AzureCosmosDBDataFeedPatch', + 'AzureCosmosDBParameter', + 'AzureDataExplorerDataFeed', + 'AzureDataExplorerDataFeedPatch', + 'AzureDataLakeStorageGen2DataFeed', + 'AzureDataLakeStorageGen2DataFeedPatch', + 'AzureDataLakeStorageGen2Parameter', + 'AzureTableDataFeed', + 'AzureTableDataFeedPatch', + 'AzureTableParameter', + 'ChangePointFeedback', + 'ChangePointFeedbackValue', + 'ChangeThresholdCondition', + 'CommentFeedback', + 'CommentFeedbackValue', + 'DataFeedDetail', + 'DataFeedDetailPatch', + 'DataFeedIngestionProgress', + 'DataFeedList', + 'DetectionAnomalyFilterCondition', + 'DetectionAnomalyResultQuery', + 'DetectionIncidentFilterCondition', + 'DetectionIncidentResultQuery', + 'DetectionSeriesQuery', + 'Dimension', + 'DimensionGroupConfiguration', + 'DimensionGroupIdentity', + 'ElasticsearchDataFeed', + 'ElasticsearchDataFeedPatch', + 'ElasticsearchParameter', + 'EmailHookInfo', + 'EmailHookInfoPatch', + 'EmailHookParameter', + 'EnrichmentStatus', + 'EnrichmentStatusList', + 'EnrichmentStatusQueryOption', + 'ErrorCode', + 'FeedbackDimensionFilter', + 'HardThresholdCondition', + 'HookInfo', + 'HookInfoPatch', + 'HookList', + 'HttpRequestDataFeed', + 'HttpRequestDataFeedPatch', + 'HttpRequestParameter', + 'IncidentProperty', + 'IncidentResult', + 'IncidentResultList', + 'InfluxDBDataFeed', + 'InfluxDBDataFeedPatch', + 'InfluxDBParameter', + 'IngestionProgressResetOptions', + 'IngestionStatus', + 'IngestionStatusList', + 'IngestionStatusQueryOptions', + 'Metric', + 'MetricAlertingConfiguration', + 'MetricDataItem', + 'MetricDataList', + 'MetricDataQueryOptions', + 'MetricDimensionList', + 'MetricDimensionQueryOptions', + 'MetricFeedback', + 'MetricFeedbackFilter', + 'MetricFeedbackList', + 'MetricSeriesItem', + 'MetricSeriesList', + 'MetricSeriesQueryOptions', + 'MongoDBDataFeed', + 'MongoDBDataFeedPatch', + 'MongoDBParameter', + 'MySqlDataFeed', + 'MySqlDataFeedPatch', + 'PeriodFeedback', + 'PeriodFeedbackValue', + 'PostgreSqlDataFeed', + 'PostgreSqlDataFeedPatch', + 'RootCause', + 'RootCauseList', + 'SQLServerDataFeed', + 'SQLServerDataFeedPatch', + 'SeriesConfiguration', + 'SeriesIdentity', + 'SeriesResult', + 'SeriesResultList', + 'SeverityCondition', + 'SeverityFilterCondition', + 'SmartDetectionCondition', + 'SqlSourceParameter', + 'SuppressCondition', + 'TopNGroupScope', + 'UsageStats', + 'ValueCondition', + 'WebhookHookInfo', + 'WebhookHookInfoPatch', + 'WebhookHookParameter', + 'WholeMetricConfiguration', + 'AnomalyAlertingConfigurationCrossMetricsOperator', + 'AnomalyAlertingConfigurationPatchCrossMetricsOperator', + 'AnomalyDetectorDirection', + 'AnomalyPropertyAnomalyStatus', + 'AnomalyScope', + 'AnomalyValue', + 'ChangePointValue', + 'DataFeedDetailPatchDataSourceType', + 'DataFeedDetailPatchFillMissingPointType', + 'DataFeedDetailPatchNeedRollup', + 'DataFeedDetailPatchRollUpMethod', + 'DataFeedDetailPatchStatus', + 'DataFeedDetailPatchViewMode', + 'DataFeedDetailRollUpMethod', + 'DataFeedDetailStatus', + 'DataSourceType', + 'DimensionGroupConfigurationConditionOperator', + 'Direction', + 'EntityStatus', + 'FeedbackQueryTimeMode', + 'FeedbackType', + 'FillMissingPointType', + 'Granularity', + 'HookInfoPatchHookType', + 'HookType', + 'IncidentPropertyIncidentStatus', + 'IngestionStatusType', + 'NeedRollupEnum', + 'PeriodType', + 'SeriesConfigurationConditionOperator', + 'Severity', + 'SnoozeScope', + 'TimeMode', + 'ViewMode', + 'WholeMetricConfigurationConditionOperator', +] diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/models/_azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2_enums.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/models/_azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2_enums.py new file mode 100644 index 000000000000..9ce04927e4e1 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/models/_azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2_enums.py @@ -0,0 +1,333 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from enum import Enum, EnumMeta +from six import with_metaclass + +class _CaseInsensitiveEnumMeta(EnumMeta): + def __getitem__(self, name): + return super().__getitem__(name.upper()) + + def __getattr__(cls, name): + """Return the enum member matching `name` + We use __getattr__ instead of descriptors or inserting into the enum + class' __dict__ in order to support `name` and `value` being both + properties for enum members (which live in the class' __dict__) and + enum members themselves. + """ + try: + return cls._member_map_[name.upper()] + except KeyError: + raise AttributeError(name) + + +class AnomalyAlertingConfigurationCrossMetricsOperator(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """cross metrics operator + + should be specified when setting up multiple metric alerting configurations + """ + + AND_ENUM = "AND" + OR_ENUM = "OR" + XOR = "XOR" + +class AnomalyAlertingConfigurationPatchCrossMetricsOperator(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """cross metrics operator + """ + + AND_ENUM = "AND" + OR_ENUM = "OR" + XOR = "XOR" + +class AnomalyDetectorDirection(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """detection direction + """ + + BOTH = "Both" + DOWN = "Down" + UP = "Up" + +class AnomalyPropertyAnomalyStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """anomaly status + + only return for alerting anomaly result + """ + + ACTIVE = "Active" + RESOLVED = "Resolved" + +class AnomalyScope(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """Anomaly scope + """ + + ALL = "All" + DIMENSION = "Dimension" + TOP_N = "TopN" + +class AnomalyValue(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + + AUTO_DETECT = "AutoDetect" + ANOMALY = "Anomaly" + NOT_ANOMALY = "NotAnomaly" + +class ChangePointValue(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + + AUTO_DETECT = "AutoDetect" + CHANGE_POINT = "ChangePoint" + NOT_CHANGE_POINT = "NotChangePoint" + +class DataFeedDetailPatchDataSourceType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """data source type + """ + + AZURE_APPLICATION_INSIGHTS = "AzureApplicationInsights" + AZURE_BLOB = "AzureBlob" + AZURE_COSMOS_DB = "AzureCosmosDB" + AZURE_DATA_EXPLORER = "AzureDataExplorer" + AZURE_DATA_LAKE_STORAGE_GEN2 = "AzureDataLakeStorageGen2" + AZURE_TABLE = "AzureTable" + ELASTICSEARCH = "Elasticsearch" + HTTP_REQUEST = "HttpRequest" + INFLUX_DB = "InfluxDB" + MONGO_DB = "MongoDB" + MY_SQL = "MySql" + POSTGRE_SQL = "PostgreSql" + SQL_SERVER = "SqlServer" + +class DataFeedDetailPatchFillMissingPointType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """the type of fill missing point for anomaly detection + """ + + SMART_FILLING = "SmartFilling" + PREVIOUS_VALUE = "PreviousValue" + CUSTOM_VALUE = "CustomValue" + NO_FILLING = "NoFilling" + +class DataFeedDetailPatchNeedRollup(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """mark if the data feed need rollup + """ + + NO_ROLLUP = "NoRollup" + NEED_ROLLUP = "NeedRollup" + ALREADY_ROLLUP = "AlreadyRollup" + +class DataFeedDetailPatchRollUpMethod(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """roll up method + """ + + NONE = "None" + SUM = "Sum" + MAX = "Max" + MIN = "Min" + AVG = "Avg" + COUNT = "Count" + +class DataFeedDetailPatchStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """data feed status + """ + + ACTIVE = "Active" + PAUSED = "Paused" + +class DataFeedDetailPatchViewMode(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """data feed access mode, default is Private + """ + + PRIVATE = "Private" + PUBLIC = "Public" + +class DataFeedDetailRollUpMethod(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """roll up method + """ + + NONE = "None" + SUM = "Sum" + MAX = "Max" + MIN = "Min" + AVG = "Avg" + COUNT = "Count" + +class DataFeedDetailStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """data feed status + """ + + ACTIVE = "Active" + PAUSED = "Paused" + +class DataSourceType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + + AZURE_APPLICATION_INSIGHTS = "AzureApplicationInsights" + AZURE_BLOB = "AzureBlob" + AZURE_COSMOS_DB = "AzureCosmosDB" + AZURE_DATA_EXPLORER = "AzureDataExplorer" + AZURE_DATA_LAKE_STORAGE_GEN2 = "AzureDataLakeStorageGen2" + AZURE_TABLE = "AzureTable" + ELASTICSEARCH = "Elasticsearch" + HTTP_REQUEST = "HttpRequest" + INFLUX_DB = "InfluxDB" + MONGO_DB = "MongoDB" + MY_SQL = "MySql" + POSTGRE_SQL = "PostgreSql" + SQL_SERVER = "SqlServer" + +class DimensionGroupConfigurationConditionOperator(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """condition operator + + should be specified when combining multiple detection conditions + """ + + AND_ENUM = "AND" + OR_ENUM = "OR" + +class Direction(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """value filter direction + """ + + BOTH = "Both" + DOWN = "Down" + UP = "Up" + +class EntityStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + + ACTIVE = "Active" + PAUSED = "Paused" + +class FeedbackQueryTimeMode(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """time mode to filter feedback + """ + + METRIC_TIMESTAMP = "MetricTimestamp" + FEEDBACK_CREATED_TIME = "FeedbackCreatedTime" + +class FeedbackType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """feedback type + """ + + ANOMALY = "Anomaly" + CHANGE_POINT = "ChangePoint" + PERIOD = "Period" + COMMENT = "Comment" + +class FillMissingPointType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """the type of fill missing point for anomaly detection + """ + + SMART_FILLING = "SmartFilling" + PREVIOUS_VALUE = "PreviousValue" + CUSTOM_VALUE = "CustomValue" + NO_FILLING = "NoFilling" + +class Granularity(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + + YEARLY = "Yearly" + MONTHLY = "Monthly" + WEEKLY = "Weekly" + DAILY = "Daily" + HOURLY = "Hourly" + MINUTELY = "Minutely" + SECONDLY = "Secondly" + CUSTOM = "Custom" + +class HookInfoPatchHookType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """hook type + """ + + WEBHOOK = "Webhook" + EMAIL = "Email" + +class HookType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """hook type + """ + + WEBHOOK = "Webhook" + EMAIL = "Email" + +class IncidentPropertyIncidentStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """incident status + + only return for alerting incident result + """ + + ACTIVE = "Active" + RESOLVED = "Resolved" + +class IngestionStatusType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """latest ingestion task status for this data slice. + """ + + NOT_STARTED = "NotStarted" + SCHEDULED = "Scheduled" + RUNNING = "Running" + SUCCEEDED = "Succeeded" + FAILED = "Failed" + NO_DATA = "NoData" + ERROR = "Error" + PAUSED = "Paused" + +class NeedRollupEnum(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """mark if the data feed need rollup + """ + + NO_ROLLUP = "NoRollup" + NEED_ROLLUP = "NeedRollup" + ALREADY_ROLLUP = "AlreadyRollup" + +class PeriodType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """the type of setting period + """ + + AUTO_DETECT = "AutoDetect" + ASSIGN_VALUE = "AssignValue" + +class SeriesConfigurationConditionOperator(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """condition operator + + should be specified when combining multiple detection conditions + """ + + AND_ENUM = "AND" + OR_ENUM = "OR" + +class Severity(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """min alert severity + """ + + LOW = "Low" + MEDIUM = "Medium" + HIGH = "High" + +class SnoozeScope(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """snooze scope + """ + + METRIC = "Metric" + SERIES = "Series" + +class TimeMode(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """time mode + """ + + ANOMALY_TIME = "AnomalyTime" + CREATED_TIME = "CreatedTime" + MODIFIED_TIME = "ModifiedTime" + +class ViewMode(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """data feed access mode, default is Private + """ + + PRIVATE = "Private" + PUBLIC = "Public" + +class WholeMetricConfigurationConditionOperator(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """condition operator + + should be specified when combining multiple detection conditions + """ + + AND_ENUM = "AND" + OR_ENUM = "OR" diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/models/_models.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/models/_models.py new file mode 100644 index 000000000000..22610cff4ef0 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/models/_models.py @@ -0,0 +1,6983 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.core.exceptions import HttpResponseError +import msrest.serialization + + +class AlertingResultQuery(msrest.serialization.Model): + """AlertingResultQuery. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. start time. + :type start_time: ~datetime.datetime + :param end_time: Required. end time. + :type end_time: ~datetime.datetime + :param time_mode: Required. time mode. Possible values include: "AnomalyTime", "CreatedTime", + "ModifiedTime". + :type time_mode: str or ~azure.ai.metricsadvisor.models.TimeMode + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + 'time_mode': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'time_mode': {'key': 'timeMode', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(AlertingResultQuery, self).__init__(**kwargs) + self.start_time = kwargs['start_time'] + self.end_time = kwargs['end_time'] + self.time_mode = kwargs['time_mode'] + + +class AlertResult(msrest.serialization.Model): + """AlertResult. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar alert_id: alert id. + :vartype alert_id: str + :ivar timestamp: anomaly time. + :vartype timestamp: ~datetime.datetime + :ivar created_time: created time. + :vartype created_time: ~datetime.datetime + :ivar modified_time: modified time. + :vartype modified_time: ~datetime.datetime + """ + + _validation = { + 'alert_id': {'readonly': True}, + 'timestamp': {'readonly': True}, + 'created_time': {'readonly': True}, + 'modified_time': {'readonly': True}, + } + + _attribute_map = { + 'alert_id': {'key': 'alertId', 'type': 'str'}, + 'timestamp': {'key': 'timestamp', 'type': 'iso-8601'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'modified_time': {'key': 'modifiedTime', 'type': 'iso-8601'}, + } + + def __init__( + self, + **kwargs + ): + super(AlertResult, self).__init__(**kwargs) + self.alert_id = None + self.timestamp = None + self.created_time = None + self.modified_time = None + + +class AlertResultList(msrest.serialization.Model): + """AlertResultList. + + All required parameters must be populated in order to send to Azure. + + :param next_link: Required. + :type next_link: str + :param value: Required. + :type value: list[~azure.ai.metricsadvisor.models.AlertResult] + """ + + _validation = { + 'next_link': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[AlertResult]'}, + } + + def __init__( + self, + **kwargs + ): + super(AlertResultList, self).__init__(**kwargs) + self.next_link = kwargs['next_link'] + self.value = kwargs['value'] + + +class AlertSnoozeCondition(msrest.serialization.Model): + """AlertSnoozeCondition. + + All required parameters must be populated in order to send to Azure. + + :param auto_snooze: Required. snooze point count, value range : [0, +∞). + :type auto_snooze: int + :param snooze_scope: Required. snooze scope. Possible values include: "Metric", "Series". + :type snooze_scope: str or ~azure.ai.metricsadvisor.models.SnoozeScope + :param only_for_successive: Required. only snooze for successive anomalies. + :type only_for_successive: bool + """ + + _validation = { + 'auto_snooze': {'required': True}, + 'snooze_scope': {'required': True}, + 'only_for_successive': {'required': True}, + } + + _attribute_map = { + 'auto_snooze': {'key': 'autoSnooze', 'type': 'int'}, + 'snooze_scope': {'key': 'snoozeScope', 'type': 'str'}, + 'only_for_successive': {'key': 'onlyForSuccessive', 'type': 'bool'}, + } + + def __init__( + self, + **kwargs + ): + super(AlertSnoozeCondition, self).__init__(**kwargs) + self.auto_snooze = kwargs['auto_snooze'] + self.snooze_scope = kwargs['snooze_scope'] + self.only_for_successive = kwargs['only_for_successive'] + + +class AnomalyAlertingConfiguration(msrest.serialization.Model): + """AnomalyAlertingConfiguration. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar anomaly_alerting_configuration_id: anomaly alerting configuration unique id. + :vartype anomaly_alerting_configuration_id: str + :param name: Required. anomaly alerting configuration name. + :type name: str + :param description: anomaly alerting configuration description. + :type description: str + :param cross_metrics_operator: cross metrics operator + + should be specified when setting up multiple metric alerting configurations. Possible values + include: "AND", "OR", "XOR". + :type cross_metrics_operator: str or + ~azure.ai.metricsadvisor.models.AnomalyAlertingConfigurationCrossMetricsOperator + :param hook_ids: Required. hook unique ids. + :type hook_ids: list[str] + :param metric_alerting_configurations: Required. Anomaly alerting configurations. + :type metric_alerting_configurations: + list[~azure.ai.metricsadvisor.models.MetricAlertingConfiguration] + """ + + _validation = { + 'anomaly_alerting_configuration_id': {'readonly': True}, + 'name': {'required': True}, + 'hook_ids': {'required': True, 'unique': True}, + 'metric_alerting_configurations': {'required': True, 'unique': True}, + } + + _attribute_map = { + 'anomaly_alerting_configuration_id': {'key': 'anomalyAlertingConfigurationId', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'cross_metrics_operator': {'key': 'crossMetricsOperator', 'type': 'str'}, + 'hook_ids': {'key': 'hookIds', 'type': '[str]'}, + 'metric_alerting_configurations': {'key': 'metricAlertingConfigurations', 'type': '[MetricAlertingConfiguration]'}, + } + + def __init__( + self, + **kwargs + ): + super(AnomalyAlertingConfiguration, self).__init__(**kwargs) + self.anomaly_alerting_configuration_id = None + self.name = kwargs['name'] + self.description = kwargs.get('description', None) + self.cross_metrics_operator = kwargs.get('cross_metrics_operator', None) + self.hook_ids = kwargs['hook_ids'] + self.metric_alerting_configurations = kwargs['metric_alerting_configurations'] + + +class AnomalyAlertingConfigurationList(msrest.serialization.Model): + """AnomalyAlertingConfigurationList. + + All required parameters must be populated in order to send to Azure. + + :param value: Required. + :type value: list[~azure.ai.metricsadvisor.models.AnomalyAlertingConfiguration] + """ + + _validation = { + 'value': {'required': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[AnomalyAlertingConfiguration]'}, + } + + def __init__( + self, + **kwargs + ): + super(AnomalyAlertingConfigurationList, self).__init__(**kwargs) + self.value = kwargs['value'] + + +class AnomalyAlertingConfigurationPatch(msrest.serialization.Model): + """AnomalyAlertingConfigurationPatch. + + :param name: Anomaly alerting configuration name. + :type name: str + :param description: anomaly alerting configuration description. + :type description: str + :param cross_metrics_operator: cross metrics operator. Possible values include: "AND", "OR", + "XOR". + :type cross_metrics_operator: str or + ~azure.ai.metricsadvisor.models.AnomalyAlertingConfigurationPatchCrossMetricsOperator + :param hook_ids: hook unique ids. + :type hook_ids: list[str] + :param metric_alerting_configurations: Anomaly alerting configurations. + :type metric_alerting_configurations: + list[~azure.ai.metricsadvisor.models.MetricAlertingConfiguration] + """ + + _validation = { + 'hook_ids': {'unique': True}, + 'metric_alerting_configurations': {'unique': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'cross_metrics_operator': {'key': 'crossMetricsOperator', 'type': 'str'}, + 'hook_ids': {'key': 'hookIds', 'type': '[str]'}, + 'metric_alerting_configurations': {'key': 'metricAlertingConfigurations', 'type': '[MetricAlertingConfiguration]'}, + } + + def __init__( + self, + **kwargs + ): + super(AnomalyAlertingConfigurationPatch, self).__init__(**kwargs) + self.name = kwargs.get('name', None) + self.description = kwargs.get('description', None) + self.cross_metrics_operator = kwargs.get('cross_metrics_operator', None) + self.hook_ids = kwargs.get('hook_ids', None) + self.metric_alerting_configurations = kwargs.get('metric_alerting_configurations', None) + + +class AnomalyDetectionConfiguration(msrest.serialization.Model): + """AnomalyDetectionConfiguration. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar anomaly_detection_configuration_id: anomaly detection configuration unique id. + :vartype anomaly_detection_configuration_id: str + :param name: Required. anomaly detection configuration name. + :type name: str + :param description: anomaly detection configuration description. + :type description: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param whole_metric_configuration: Required. + :type whole_metric_configuration: ~azure.ai.metricsadvisor.models.WholeMetricConfiguration + :param dimension_group_override_configurations: detection configuration for series group. + :type dimension_group_override_configurations: + list[~azure.ai.metricsadvisor.models.DimensionGroupConfiguration] + :param series_override_configurations: detection configuration for specific series. + :type series_override_configurations: list[~azure.ai.metricsadvisor.models.SeriesConfiguration] + """ + + _validation = { + 'anomaly_detection_configuration_id': {'readonly': True}, + 'name': {'required': True}, + 'metric_id': {'required': True}, + 'whole_metric_configuration': {'required': True}, + 'dimension_group_override_configurations': {'unique': True}, + 'series_override_configurations': {'unique': True}, + } + + _attribute_map = { + 'anomaly_detection_configuration_id': {'key': 'anomalyDetectionConfigurationId', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'whole_metric_configuration': {'key': 'wholeMetricConfiguration', 'type': 'WholeMetricConfiguration'}, + 'dimension_group_override_configurations': {'key': 'dimensionGroupOverrideConfigurations', 'type': '[DimensionGroupConfiguration]'}, + 'series_override_configurations': {'key': 'seriesOverrideConfigurations', 'type': '[SeriesConfiguration]'}, + } + + def __init__( + self, + **kwargs + ): + super(AnomalyDetectionConfiguration, self).__init__(**kwargs) + self.anomaly_detection_configuration_id = None + self.name = kwargs['name'] + self.description = kwargs.get('description', None) + self.metric_id = kwargs['metric_id'] + self.whole_metric_configuration = kwargs['whole_metric_configuration'] + self.dimension_group_override_configurations = kwargs.get('dimension_group_override_configurations', None) + self.series_override_configurations = kwargs.get('series_override_configurations', None) + + +class AnomalyDetectionConfigurationList(msrest.serialization.Model): + """AnomalyDetectionConfigurationList. + + All required parameters must be populated in order to send to Azure. + + :param value: Required. + :type value: list[~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration] + """ + + _validation = { + 'value': {'required': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[AnomalyDetectionConfiguration]'}, + } + + def __init__( + self, + **kwargs + ): + super(AnomalyDetectionConfigurationList, self).__init__(**kwargs) + self.value = kwargs['value'] + + +class AnomalyDetectionConfigurationPatch(msrest.serialization.Model): + """AnomalyDetectionConfigurationPatch. + + :param name: anomaly detection configuration name. + :type name: str + :param description: anomaly detection configuration description. + :type description: str + :param whole_metric_configuration: + :type whole_metric_configuration: ~azure.ai.metricsadvisor.models.WholeMetricConfiguration + :param dimension_group_override_configurations: detection configuration for series group. + :type dimension_group_override_configurations: + list[~azure.ai.metricsadvisor.models.DimensionGroupConfiguration] + :param series_override_configurations: detection configuration for specific series. + :type series_override_configurations: list[~azure.ai.metricsadvisor.models.SeriesConfiguration] + """ + + _validation = { + 'dimension_group_override_configurations': {'unique': True}, + 'series_override_configurations': {'unique': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'whole_metric_configuration': {'key': 'wholeMetricConfiguration', 'type': 'WholeMetricConfiguration'}, + 'dimension_group_override_configurations': {'key': 'dimensionGroupOverrideConfigurations', 'type': '[DimensionGroupConfiguration]'}, + 'series_override_configurations': {'key': 'seriesOverrideConfigurations', 'type': '[SeriesConfiguration]'}, + } + + def __init__( + self, + **kwargs + ): + super(AnomalyDetectionConfigurationPatch, self).__init__(**kwargs) + self.name = kwargs.get('name', None) + self.description = kwargs.get('description', None) + self.whole_metric_configuration = kwargs.get('whole_metric_configuration', None) + self.dimension_group_override_configurations = kwargs.get('dimension_group_override_configurations', None) + self.series_override_configurations = kwargs.get('series_override_configurations', None) + + +class AnomalyDimensionList(msrest.serialization.Model): + """AnomalyDimensionList. + + All required parameters must be populated in order to send to Azure. + + :param next_link: Required. + :type next_link: str + :param value: Required. + :type value: list[str] + """ + + _validation = { + 'next_link': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[str]'}, + } + + def __init__( + self, + **kwargs + ): + super(AnomalyDimensionList, self).__init__(**kwargs) + self.next_link = kwargs['next_link'] + self.value = kwargs['value'] + + +class AnomalyDimensionQuery(msrest.serialization.Model): + """AnomalyDimensionQuery. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. start time. + :type start_time: ~datetime.datetime + :param end_time: Required. end time. + :type end_time: ~datetime.datetime + :param dimension_name: Required. dimension to query. + :type dimension_name: str + :param dimension_filter: + :type dimension_filter: ~azure.ai.metricsadvisor.models.DimensionGroupIdentity + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + 'dimension_name': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'dimension_name': {'key': 'dimensionName', 'type': 'str'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': 'DimensionGroupIdentity'}, + } + + def __init__( + self, + **kwargs + ): + super(AnomalyDimensionQuery, self).__init__(**kwargs) + self.start_time = kwargs['start_time'] + self.end_time = kwargs['end_time'] + self.dimension_name = kwargs['dimension_name'] + self.dimension_filter = kwargs.get('dimension_filter', None) + + +class MetricFeedback(msrest.serialization.Model): + """MetricFeedback. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param feedback_type: Required. feedback type.Constant filled by server. Possible values + include: "Anomaly", "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :ivar feedback_id: feedback unique id. + :vartype feedback_id: str + :ivar created_time: feedback created time. + :vartype created_time: ~datetime.datetime + :ivar user_principal: user who gives this feedback. + :vartype user_principal: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param dimension_filter: Required. + :type dimension_filter: ~azure.ai.metricsadvisor.models.FeedbackDimensionFilter + """ + + _validation = { + 'feedback_type': {'required': True}, + 'feedback_id': {'readonly': True}, + 'created_time': {'readonly': True}, + 'user_principal': {'readonly': True}, + 'metric_id': {'required': True}, + 'dimension_filter': {'required': True}, + } + + _attribute_map = { + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'feedback_id': {'key': 'feedbackId', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'user_principal': {'key': 'userPrincipal', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': 'FeedbackDimensionFilter'}, + } + + _subtype_map = { + 'feedback_type': {'Anomaly': 'AnomalyFeedback', 'ChangePoint': 'ChangePointFeedback', 'Comment': 'CommentFeedback', 'Period': 'PeriodFeedback'} + } + + def __init__( + self, + **kwargs + ): + super(MetricFeedback, self).__init__(**kwargs) + self.feedback_type = None # type: Optional[str] + self.feedback_id = None + self.created_time = None + self.user_principal = None + self.metric_id = kwargs['metric_id'] + self.dimension_filter = kwargs['dimension_filter'] + + +class AnomalyFeedback(MetricFeedback): + """AnomalyFeedback. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param feedback_type: Required. feedback type.Constant filled by server. Possible values + include: "Anomaly", "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :ivar feedback_id: feedback unique id. + :vartype feedback_id: str + :ivar created_time: feedback created time. + :vartype created_time: ~datetime.datetime + :ivar user_principal: user who gives this feedback. + :vartype user_principal: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param dimension_filter: Required. + :type dimension_filter: ~azure.ai.metricsadvisor.models.FeedbackDimensionFilter + :param start_time: Required. the start timestamp of feedback timerange. + :type start_time: ~datetime.datetime + :param end_time: Required. the end timestamp of feedback timerange, when equals to startTime + means only one timestamp. + :type end_time: ~datetime.datetime + :param value: Required. + :type value: ~azure.ai.metricsadvisor.models.AnomalyFeedbackValue + :param anomaly_detection_configuration_id: the corresponding anomaly detection configuration of + this feedback. + :type anomaly_detection_configuration_id: str + :param anomaly_detection_configuration_snapshot: + :type anomaly_detection_configuration_snapshot: + ~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration + """ + + _validation = { + 'feedback_type': {'required': True}, + 'feedback_id': {'readonly': True}, + 'created_time': {'readonly': True}, + 'user_principal': {'readonly': True}, + 'metric_id': {'required': True}, + 'dimension_filter': {'required': True}, + 'start_time': {'required': True}, + 'end_time': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'feedback_id': {'key': 'feedbackId', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'user_principal': {'key': 'userPrincipal', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': 'FeedbackDimensionFilter'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'value': {'key': 'value', 'type': 'AnomalyFeedbackValue'}, + 'anomaly_detection_configuration_id': {'key': 'anomalyDetectionConfigurationId', 'type': 'str'}, + 'anomaly_detection_configuration_snapshot': {'key': 'anomalyDetectionConfigurationSnapshot', 'type': 'AnomalyDetectionConfiguration'}, + } + + def __init__( + self, + **kwargs + ): + super(AnomalyFeedback, self).__init__(**kwargs) + self.feedback_type = 'Anomaly' # type: str + self.start_time = kwargs['start_time'] + self.end_time = kwargs['end_time'] + self.value = kwargs['value'] + self.anomaly_detection_configuration_id = kwargs.get('anomaly_detection_configuration_id', None) + self.anomaly_detection_configuration_snapshot = kwargs.get('anomaly_detection_configuration_snapshot', None) + + +class AnomalyFeedbackValue(msrest.serialization.Model): + """AnomalyFeedbackValue. + + All required parameters must be populated in order to send to Azure. + + :param anomaly_value: Required. Possible values include: "AutoDetect", "Anomaly", + "NotAnomaly". + :type anomaly_value: str or ~azure.ai.metricsadvisor.models.AnomalyValue + """ + + _validation = { + 'anomaly_value': {'required': True}, + } + + _attribute_map = { + 'anomaly_value': {'key': 'anomalyValue', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(AnomalyFeedbackValue, self).__init__(**kwargs) + self.anomaly_value = kwargs['anomaly_value'] + + +class AnomalyProperty(msrest.serialization.Model): + """AnomalyProperty. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param anomaly_severity: Required. anomaly severity. Possible values include: "Low", "Medium", + "High". + :type anomaly_severity: str or ~azure.ai.metricsadvisor.models.Severity + :ivar anomaly_status: anomaly status + + only return for alerting anomaly result. Possible values include: "Active", "Resolved". + :vartype anomaly_status: str or ~azure.ai.metricsadvisor.models.AnomalyPropertyAnomalyStatus + """ + + _validation = { + 'anomaly_severity': {'required': True}, + 'anomaly_status': {'readonly': True}, + } + + _attribute_map = { + 'anomaly_severity': {'key': 'anomalySeverity', 'type': 'str'}, + 'anomaly_status': {'key': 'anomalyStatus', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(AnomalyProperty, self).__init__(**kwargs) + self.anomaly_severity = kwargs['anomaly_severity'] + self.anomaly_status = None + + +class AnomalyResult(msrest.serialization.Model): + """AnomalyResult. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar metric_id: metric unique id + + only return for alerting anomaly result. + :vartype metric_id: str + :ivar anomaly_detection_configuration_id: anomaly detection configuration unique id + + only return for alerting anomaly result. + :vartype anomaly_detection_configuration_id: str + :param timestamp: Required. anomaly time. + :type timestamp: ~datetime.datetime + :ivar created_time: created time + + only return for alerting result. + :vartype created_time: ~datetime.datetime + :ivar modified_time: modified time + + only return for alerting result. + :vartype modified_time: ~datetime.datetime + :param dimension: Required. dimension specified for series. + :type dimension: dict[str, str] + :param property: Required. + :type property: ~azure.ai.metricsadvisor.models.AnomalyProperty + """ + + _validation = { + 'metric_id': {'readonly': True}, + 'anomaly_detection_configuration_id': {'readonly': True}, + 'timestamp': {'required': True}, + 'created_time': {'readonly': True}, + 'modified_time': {'readonly': True}, + 'dimension': {'required': True}, + 'property': {'required': True}, + } + + _attribute_map = { + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'anomaly_detection_configuration_id': {'key': 'anomalyDetectionConfigurationId', 'type': 'str'}, + 'timestamp': {'key': 'timestamp', 'type': 'iso-8601'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'modified_time': {'key': 'modifiedTime', 'type': 'iso-8601'}, + 'dimension': {'key': 'dimension', 'type': '{str}'}, + 'property': {'key': 'property', 'type': 'AnomalyProperty'}, + } + + def __init__( + self, + **kwargs + ): + super(AnomalyResult, self).__init__(**kwargs) + self.metric_id = None + self.anomaly_detection_configuration_id = None + self.timestamp = kwargs['timestamp'] + self.created_time = None + self.modified_time = None + self.dimension = kwargs['dimension'] + self.property = kwargs['property'] + + +class AnomalyResultList(msrest.serialization.Model): + """AnomalyResultList. + + All required parameters must be populated in order to send to Azure. + + :param next_link: Required. + :type next_link: str + :param value: Required. + :type value: list[~azure.ai.metricsadvisor.models.AnomalyResult] + """ + + _validation = { + 'next_link': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[AnomalyResult]'}, + } + + def __init__( + self, + **kwargs + ): + super(AnomalyResultList, self).__init__(**kwargs) + self.next_link = kwargs['next_link'] + self.value = kwargs['value'] + + +class DataFeedDetail(msrest.serialization.Model): + """DataFeedDetail. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: AzureApplicationInsightsDataFeed, AzureBlobDataFeed, AzureCosmosDBDataFeed, AzureDataExplorerDataFeed, AzureDataLakeStorageGen2DataFeed, AzureTableDataFeed, ElasticsearchDataFeed, HttpRequestDataFeed, InfluxDBDataFeed, MongoDBDataFeed, MySqlDataFeed, PostgreSqlDataFeed, SQLServerDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + } + + _subtype_map = { + 'data_source_type': {'AzureApplicationInsights': 'AzureApplicationInsightsDataFeed', 'AzureBlob': 'AzureBlobDataFeed', 'AzureCosmosDB': 'AzureCosmosDBDataFeed', 'AzureDataExplorer': 'AzureDataExplorerDataFeed', 'AzureDataLakeStorageGen2': 'AzureDataLakeStorageGen2DataFeed', 'AzureTable': 'AzureTableDataFeed', 'Elasticsearch': 'ElasticsearchDataFeed', 'HttpRequest': 'HttpRequestDataFeed', 'InfluxDB': 'InfluxDBDataFeed', 'MongoDB': 'MongoDBDataFeed', 'MySql': 'MySqlDataFeed', 'PostgreSql': 'PostgreSqlDataFeed', 'SqlServer': 'SQLServerDataFeed'} + } + + def __init__( + self, + **kwargs + ): + super(DataFeedDetail, self).__init__(**kwargs) + self.data_source_type = None # type: Optional[str] + self.data_feed_id = None + self.data_feed_name = kwargs['data_feed_name'] + self.data_feed_description = kwargs.get('data_feed_description', None) + self.granularity_name = kwargs['granularity_name'] + self.granularity_amount = kwargs.get('granularity_amount', None) + self.metrics = kwargs['metrics'] + self.dimension = kwargs.get('dimension', None) + self.timestamp_column = kwargs.get('timestamp_column', None) + self.data_start_from = kwargs['data_start_from'] + self.start_offset_in_seconds = kwargs.get('start_offset_in_seconds', 0) + self.max_concurrency = kwargs.get('max_concurrency', -1) + self.min_retry_interval_in_seconds = kwargs.get('min_retry_interval_in_seconds', -1) + self.stop_retry_after_in_seconds = kwargs.get('stop_retry_after_in_seconds', -1) + self.need_rollup = kwargs.get('need_rollup', "NeedRollup") + self.roll_up_method = kwargs.get('roll_up_method', None) + self.roll_up_columns = kwargs.get('roll_up_columns', None) + self.all_up_identification = kwargs.get('all_up_identification', None) + self.fill_missing_point_type = kwargs.get('fill_missing_point_type', "SmartFilling") + self.fill_missing_point_value = kwargs.get('fill_missing_point_value', None) + self.view_mode = kwargs.get('view_mode', "Private") + self.admins = kwargs.get('admins', None) + self.viewers = kwargs.get('viewers', None) + self.is_admin = None + self.creator = None + self.status = None + self.created_time = None + self.action_link_template = kwargs.get('action_link_template', None) + + +class AzureApplicationInsightsDataFeed(DataFeedDetail): + """AzureApplicationInsightsDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureApplicationInsightsParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureApplicationInsightsParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureApplicationInsightsDataFeed, self).__init__(**kwargs) + self.data_source_type = 'AzureApplicationInsights' # type: str + self.data_source_parameter = kwargs['data_source_parameter'] + + +class DataFeedDetailPatch(msrest.serialization.Model): + """DataFeedDetailPatch. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: AzureApplicationInsightsDataFeedPatch, AzureBlobDataFeedPatch, AzureCosmosDBDataFeedPatch, AzureDataExplorerDataFeedPatch, AzureDataLakeStorageGen2DataFeedPatch, AzureTableDataFeedPatch, ElasticsearchDataFeedPatch, HttpRequestDataFeedPatch, InfluxDBDataFeedPatch, MongoDBDataFeedPatch, MySqlDataFeedPatch, PostgreSqlDataFeedPatch, SQLServerDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + } + + _subtype_map = { + 'data_source_type': {'AzureApplicationInsights': 'AzureApplicationInsightsDataFeedPatch', 'AzureBlob': 'AzureBlobDataFeedPatch', 'AzureCosmosDB': 'AzureCosmosDBDataFeedPatch', 'AzureDataExplorer': 'AzureDataExplorerDataFeedPatch', 'AzureDataLakeStorageGen2': 'AzureDataLakeStorageGen2DataFeedPatch', 'AzureTable': 'AzureTableDataFeedPatch', 'Elasticsearch': 'ElasticsearchDataFeedPatch', 'HttpRequest': 'HttpRequestDataFeedPatch', 'InfluxDB': 'InfluxDBDataFeedPatch', 'MongoDB': 'MongoDBDataFeedPatch', 'MySql': 'MySqlDataFeedPatch', 'PostgreSql': 'PostgreSqlDataFeedPatch', 'SqlServer': 'SQLServerDataFeedPatch'} + } + + def __init__( + self, + **kwargs + ): + super(DataFeedDetailPatch, self).__init__(**kwargs) + self.data_source_type = None # type: Optional[str] + self.data_feed_name = kwargs.get('data_feed_name', None) + self.data_feed_description = kwargs.get('data_feed_description', None) + self.timestamp_column = kwargs.get('timestamp_column', None) + self.data_start_from = kwargs.get('data_start_from', None) + self.start_offset_in_seconds = kwargs.get('start_offset_in_seconds', None) + self.max_concurrency = kwargs.get('max_concurrency', None) + self.min_retry_interval_in_seconds = kwargs.get('min_retry_interval_in_seconds', None) + self.stop_retry_after_in_seconds = kwargs.get('stop_retry_after_in_seconds', None) + self.need_rollup = kwargs.get('need_rollup', None) + self.roll_up_method = kwargs.get('roll_up_method', None) + self.roll_up_columns = kwargs.get('roll_up_columns', None) + self.all_up_identification = kwargs.get('all_up_identification', None) + self.fill_missing_point_type = kwargs.get('fill_missing_point_type', None) + self.fill_missing_point_value = kwargs.get('fill_missing_point_value', None) + self.view_mode = kwargs.get('view_mode', None) + self.admins = kwargs.get('admins', None) + self.viewers = kwargs.get('viewers', None) + self.status = kwargs.get('status', None) + self.action_link_template = kwargs.get('action_link_template', None) + + +class AzureApplicationInsightsDataFeedPatch(DataFeedDetailPatch): + """AzureApplicationInsightsDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureApplicationInsightsParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureApplicationInsightsParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureApplicationInsightsDataFeedPatch, self).__init__(**kwargs) + self.data_source_type = 'AzureApplicationInsights' # type: str + self.data_source_parameter = kwargs.get('data_source_parameter', None) + + +class AzureApplicationInsightsParameter(msrest.serialization.Model): + """AzureApplicationInsightsParameter. + + All required parameters must be populated in order to send to Azure. + + :param azure_cloud: Required. Azure cloud environment. + :type azure_cloud: str + :param application_id: Required. Azure Application Insights ID. + :type application_id: str + :param api_key: Required. API Key. + :type api_key: str + :param query: Required. Query. + :type query: str + """ + + _validation = { + 'azure_cloud': {'required': True}, + 'application_id': {'required': True}, + 'api_key': {'required': True}, + 'query': {'required': True}, + } + + _attribute_map = { + 'azure_cloud': {'key': 'azureCloud', 'type': 'str'}, + 'application_id': {'key': 'applicationId', 'type': 'str'}, + 'api_key': {'key': 'apiKey', 'type': 'str'}, + 'query': {'key': 'query', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureApplicationInsightsParameter, self).__init__(**kwargs) + self.azure_cloud = kwargs['azure_cloud'] + self.application_id = kwargs['application_id'] + self.api_key = kwargs['api_key'] + self.query = kwargs['query'] + + +class AzureBlobDataFeed(DataFeedDetail): + """AzureBlobDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureBlobParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureBlobParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureBlobDataFeed, self).__init__(**kwargs) + self.data_source_type = 'AzureBlob' # type: str + self.data_source_parameter = kwargs['data_source_parameter'] + + +class AzureBlobDataFeedPatch(DataFeedDetailPatch): + """AzureBlobDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureBlobParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureBlobParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureBlobDataFeedPatch, self).__init__(**kwargs) + self.data_source_type = 'AzureBlob' # type: str + self.data_source_parameter = kwargs.get('data_source_parameter', None) + + +class AzureBlobParameter(msrest.serialization.Model): + """AzureBlobParameter. + + All required parameters must be populated in order to send to Azure. + + :param connection_string: Required. Azure Blob connection string. + :type connection_string: str + :param container: Required. Container. + :type container: str + :param blob_template: Required. Blob Template. + :type blob_template: str + """ + + _validation = { + 'connection_string': {'required': True}, + 'container': {'required': True}, + 'blob_template': {'required': True}, + } + + _attribute_map = { + 'connection_string': {'key': 'connectionString', 'type': 'str'}, + 'container': {'key': 'container', 'type': 'str'}, + 'blob_template': {'key': 'blobTemplate', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureBlobParameter, self).__init__(**kwargs) + self.connection_string = kwargs['connection_string'] + self.container = kwargs['container'] + self.blob_template = kwargs['blob_template'] + + +class AzureCosmosDBDataFeed(DataFeedDetail): + """AzureCosmosDBDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureCosmosDBParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureCosmosDBParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureCosmosDBDataFeed, self).__init__(**kwargs) + self.data_source_type = 'AzureCosmosDB' # type: str + self.data_source_parameter = kwargs['data_source_parameter'] + + +class AzureCosmosDBDataFeedPatch(DataFeedDetailPatch): + """AzureCosmosDBDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureCosmosDBParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureCosmosDBParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureCosmosDBDataFeedPatch, self).__init__(**kwargs) + self.data_source_type = 'AzureCosmosDB' # type: str + self.data_source_parameter = kwargs.get('data_source_parameter', None) + + +class AzureCosmosDBParameter(msrest.serialization.Model): + """AzureCosmosDBParameter. + + All required parameters must be populated in order to send to Azure. + + :param connection_string: Required. Azure CosmosDB connection string. + :type connection_string: str + :param sql_query: Required. Query script. + :type sql_query: str + :param database: Required. Database name. + :type database: str + :param collection_id: Required. Collection id. + :type collection_id: str + """ + + _validation = { + 'connection_string': {'required': True}, + 'sql_query': {'required': True}, + 'database': {'required': True}, + 'collection_id': {'required': True}, + } + + _attribute_map = { + 'connection_string': {'key': 'connectionString', 'type': 'str'}, + 'sql_query': {'key': 'sqlQuery', 'type': 'str'}, + 'database': {'key': 'database', 'type': 'str'}, + 'collection_id': {'key': 'collectionId', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureCosmosDBParameter, self).__init__(**kwargs) + self.connection_string = kwargs['connection_string'] + self.sql_query = kwargs['sql_query'] + self.database = kwargs['database'] + self.collection_id = kwargs['collection_id'] + + +class AzureDataExplorerDataFeed(DataFeedDetail): + """AzureDataExplorerDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureDataExplorerDataFeed, self).__init__(**kwargs) + self.data_source_type = 'AzureDataExplorer' # type: str + self.data_source_parameter = kwargs['data_source_parameter'] + + +class AzureDataExplorerDataFeedPatch(DataFeedDetailPatch): + """AzureDataExplorerDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureDataExplorerDataFeedPatch, self).__init__(**kwargs) + self.data_source_type = 'AzureDataExplorer' # type: str + self.data_source_parameter = kwargs.get('data_source_parameter', None) + + +class AzureDataLakeStorageGen2DataFeed(DataFeedDetail): + """AzureDataLakeStorageGen2DataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureDataLakeStorageGen2Parameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureDataLakeStorageGen2Parameter'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureDataLakeStorageGen2DataFeed, self).__init__(**kwargs) + self.data_source_type = 'AzureDataLakeStorageGen2' # type: str + self.data_source_parameter = kwargs['data_source_parameter'] + + +class AzureDataLakeStorageGen2DataFeedPatch(DataFeedDetailPatch): + """AzureDataLakeStorageGen2DataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureDataLakeStorageGen2Parameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureDataLakeStorageGen2Parameter'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureDataLakeStorageGen2DataFeedPatch, self).__init__(**kwargs) + self.data_source_type = 'AzureDataLakeStorageGen2' # type: str + self.data_source_parameter = kwargs.get('data_source_parameter', None) + + +class AzureDataLakeStorageGen2Parameter(msrest.serialization.Model): + """AzureDataLakeStorageGen2Parameter. + + All required parameters must be populated in order to send to Azure. + + :param account_name: Required. Account name. + :type account_name: str + :param account_key: Required. Account key. + :type account_key: str + :param file_system_name: Required. File system name (Container). + :type file_system_name: str + :param directory_template: Required. Directory template. + :type directory_template: str + :param file_template: Required. File template. + :type file_template: str + """ + + _validation = { + 'account_name': {'required': True}, + 'account_key': {'required': True}, + 'file_system_name': {'required': True}, + 'directory_template': {'required': True}, + 'file_template': {'required': True}, + } + + _attribute_map = { + 'account_name': {'key': 'accountName', 'type': 'str'}, + 'account_key': {'key': 'accountKey', 'type': 'str'}, + 'file_system_name': {'key': 'fileSystemName', 'type': 'str'}, + 'directory_template': {'key': 'directoryTemplate', 'type': 'str'}, + 'file_template': {'key': 'fileTemplate', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureDataLakeStorageGen2Parameter, self).__init__(**kwargs) + self.account_name = kwargs['account_name'] + self.account_key = kwargs['account_key'] + self.file_system_name = kwargs['file_system_name'] + self.directory_template = kwargs['directory_template'] + self.file_template = kwargs['file_template'] + + +class AzureTableDataFeed(DataFeedDetail): + """AzureTableDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureTableParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureTableParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureTableDataFeed, self).__init__(**kwargs) + self.data_source_type = 'AzureTable' # type: str + self.data_source_parameter = kwargs['data_source_parameter'] + + +class AzureTableDataFeedPatch(DataFeedDetailPatch): + """AzureTableDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureTableParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureTableParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureTableDataFeedPatch, self).__init__(**kwargs) + self.data_source_type = 'AzureTable' # type: str + self.data_source_parameter = kwargs.get('data_source_parameter', None) + + +class AzureTableParameter(msrest.serialization.Model): + """AzureTableParameter. + + All required parameters must be populated in order to send to Azure. + + :param connection_string: Required. Azure Table connection string. + :type connection_string: str + :param table: Required. Table name. + :type table: str + :param query: Required. Query script. + :type query: str + """ + + _validation = { + 'connection_string': {'required': True}, + 'table': {'required': True}, + 'query': {'required': True}, + } + + _attribute_map = { + 'connection_string': {'key': 'connectionString', 'type': 'str'}, + 'table': {'key': 'table', 'type': 'str'}, + 'query': {'key': 'query', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(AzureTableParameter, self).__init__(**kwargs) + self.connection_string = kwargs['connection_string'] + self.table = kwargs['table'] + self.query = kwargs['query'] + + +class ChangePointFeedback(MetricFeedback): + """ChangePointFeedback. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param feedback_type: Required. feedback type.Constant filled by server. Possible values + include: "Anomaly", "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :ivar feedback_id: feedback unique id. + :vartype feedback_id: str + :ivar created_time: feedback created time. + :vartype created_time: ~datetime.datetime + :ivar user_principal: user who gives this feedback. + :vartype user_principal: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param dimension_filter: Required. + :type dimension_filter: ~azure.ai.metricsadvisor.models.FeedbackDimensionFilter + :param start_time: Required. the start timestamp of feedback timerange. + :type start_time: ~datetime.datetime + :param end_time: Required. the end timestamp of feedback timerange, when equals to startTime + means only one timestamp. + :type end_time: ~datetime.datetime + :param value: Required. + :type value: ~azure.ai.metricsadvisor.models.ChangePointFeedbackValue + """ + + _validation = { + 'feedback_type': {'required': True}, + 'feedback_id': {'readonly': True}, + 'created_time': {'readonly': True}, + 'user_principal': {'readonly': True}, + 'metric_id': {'required': True}, + 'dimension_filter': {'required': True}, + 'start_time': {'required': True}, + 'end_time': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'feedback_id': {'key': 'feedbackId', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'user_principal': {'key': 'userPrincipal', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': 'FeedbackDimensionFilter'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'value': {'key': 'value', 'type': 'ChangePointFeedbackValue'}, + } + + def __init__( + self, + **kwargs + ): + super(ChangePointFeedback, self).__init__(**kwargs) + self.feedback_type = 'ChangePoint' # type: str + self.start_time = kwargs['start_time'] + self.end_time = kwargs['end_time'] + self.value = kwargs['value'] + + +class ChangePointFeedbackValue(msrest.serialization.Model): + """ChangePointFeedbackValue. + + All required parameters must be populated in order to send to Azure. + + :param change_point_value: Required. Possible values include: "AutoDetect", "ChangePoint", + "NotChangePoint". + :type change_point_value: str or ~azure.ai.metricsadvisor.models.ChangePointValue + """ + + _validation = { + 'change_point_value': {'required': True}, + } + + _attribute_map = { + 'change_point_value': {'key': 'changePointValue', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(ChangePointFeedbackValue, self).__init__(**kwargs) + self.change_point_value = kwargs['change_point_value'] + + +class ChangeThresholdCondition(msrest.serialization.Model): + """ChangeThresholdCondition. + + All required parameters must be populated in order to send to Azure. + + :param change_percentage: Required. change percentage, value range : [0, +∞). + :type change_percentage: float + :param shift_point: Required. shift point, value range : [1, +∞). + :type shift_point: int + :param within_range: Required. if the withinRange = true, detected data is abnormal when the + value falls in the range, in this case anomalyDetectorDirection must be Both + if the withinRange = false, detected data is abnormal when the value falls out of the range. + :type within_range: bool + :param anomaly_detector_direction: Required. detection direction. Possible values include: + "Both", "Down", "Up". + :type anomaly_detector_direction: str or + ~azure.ai.metricsadvisor.models.AnomalyDetectorDirection + :param suppress_condition: Required. + :type suppress_condition: ~azure.ai.metricsadvisor.models.SuppressCondition + """ + + _validation = { + 'change_percentage': {'required': True}, + 'shift_point': {'required': True}, + 'within_range': {'required': True}, + 'anomaly_detector_direction': {'required': True}, + 'suppress_condition': {'required': True}, + } + + _attribute_map = { + 'change_percentage': {'key': 'changePercentage', 'type': 'float'}, + 'shift_point': {'key': 'shiftPoint', 'type': 'int'}, + 'within_range': {'key': 'withinRange', 'type': 'bool'}, + 'anomaly_detector_direction': {'key': 'anomalyDetectorDirection', 'type': 'str'}, + 'suppress_condition': {'key': 'suppressCondition', 'type': 'SuppressCondition'}, + } + + def __init__( + self, + **kwargs + ): + super(ChangeThresholdCondition, self).__init__(**kwargs) + self.change_percentage = kwargs['change_percentage'] + self.shift_point = kwargs['shift_point'] + self.within_range = kwargs['within_range'] + self.anomaly_detector_direction = kwargs['anomaly_detector_direction'] + self.suppress_condition = kwargs['suppress_condition'] + + +class CommentFeedback(MetricFeedback): + """CommentFeedback. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param feedback_type: Required. feedback type.Constant filled by server. Possible values + include: "Anomaly", "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :ivar feedback_id: feedback unique id. + :vartype feedback_id: str + :ivar created_time: feedback created time. + :vartype created_time: ~datetime.datetime + :ivar user_principal: user who gives this feedback. + :vartype user_principal: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param dimension_filter: Required. + :type dimension_filter: ~azure.ai.metricsadvisor.models.FeedbackDimensionFilter + :param start_time: the start timestamp of feedback timerange. + :type start_time: ~datetime.datetime + :param end_time: the end timestamp of feedback timerange, when equals to startTime means only + one timestamp. + :type end_time: ~datetime.datetime + :param value: Required. + :type value: ~azure.ai.metricsadvisor.models.CommentFeedbackValue + """ + + _validation = { + 'feedback_type': {'required': True}, + 'feedback_id': {'readonly': True}, + 'created_time': {'readonly': True}, + 'user_principal': {'readonly': True}, + 'metric_id': {'required': True}, + 'dimension_filter': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'feedback_id': {'key': 'feedbackId', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'user_principal': {'key': 'userPrincipal', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': 'FeedbackDimensionFilter'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'value': {'key': 'value', 'type': 'CommentFeedbackValue'}, + } + + def __init__( + self, + **kwargs + ): + super(CommentFeedback, self).__init__(**kwargs) + self.feedback_type = 'Comment' # type: str + self.start_time = kwargs.get('start_time', None) + self.end_time = kwargs.get('end_time', None) + self.value = kwargs['value'] + + +class CommentFeedbackValue(msrest.serialization.Model): + """CommentFeedbackValue. + + All required parameters must be populated in order to send to Azure. + + :param comment_value: Required. the comment string. + :type comment_value: str + """ + + _validation = { + 'comment_value': {'required': True}, + } + + _attribute_map = { + 'comment_value': {'key': 'commentValue', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(CommentFeedbackValue, self).__init__(**kwargs) + self.comment_value = kwargs['comment_value'] + + +class DataFeedIngestionProgress(msrest.serialization.Model): + """DataFeedIngestionProgress. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar latest_success_timestamp: the timestamp of lastest success ingestion job. + null indicates not available. + :vartype latest_success_timestamp: ~datetime.datetime + :ivar latest_active_timestamp: the timestamp of lastest ingestion job with status update. + null indicates not available. + :vartype latest_active_timestamp: ~datetime.datetime + """ + + _validation = { + 'latest_success_timestamp': {'readonly': True}, + 'latest_active_timestamp': {'readonly': True}, + } + + _attribute_map = { + 'latest_success_timestamp': {'key': 'latestSuccessTimestamp', 'type': 'iso-8601'}, + 'latest_active_timestamp': {'key': 'latestActiveTimestamp', 'type': 'iso-8601'}, + } + + def __init__( + self, + **kwargs + ): + super(DataFeedIngestionProgress, self).__init__(**kwargs) + self.latest_success_timestamp = None + self.latest_active_timestamp = None + + +class DataFeedList(msrest.serialization.Model): + """DataFeedList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar next_link: + :vartype next_link: str + :ivar value: + :vartype value: list[~azure.ai.metricsadvisor.models.DataFeedDetail] + """ + + _validation = { + 'next_link': {'readonly': True}, + 'value': {'readonly': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[DataFeedDetail]'}, + } + + def __init__( + self, + **kwargs + ): + super(DataFeedList, self).__init__(**kwargs) + self.next_link = None + self.value = None + + +class DetectionAnomalyFilterCondition(msrest.serialization.Model): + """DetectionAnomalyFilterCondition. + + :param dimension_filter: dimension filter. + :type dimension_filter: list[~azure.ai.metricsadvisor.models.DimensionGroupIdentity] + :param severity_filter: + :type severity_filter: ~azure.ai.metricsadvisor.models.SeverityFilterCondition + """ + + _validation = { + 'dimension_filter': {'unique': True}, + } + + _attribute_map = { + 'dimension_filter': {'key': 'dimensionFilter', 'type': '[DimensionGroupIdentity]'}, + 'severity_filter': {'key': 'severityFilter', 'type': 'SeverityFilterCondition'}, + } + + def __init__( + self, + **kwargs + ): + super(DetectionAnomalyFilterCondition, self).__init__(**kwargs) + self.dimension_filter = kwargs.get('dimension_filter', None) + self.severity_filter = kwargs.get('severity_filter', None) + + +class DetectionAnomalyResultQuery(msrest.serialization.Model): + """DetectionAnomalyResultQuery. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. start time. + :type start_time: ~datetime.datetime + :param end_time: Required. end time. + :type end_time: ~datetime.datetime + :param filter: + :type filter: ~azure.ai.metricsadvisor.models.DetectionAnomalyFilterCondition + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'filter': {'key': 'filter', 'type': 'DetectionAnomalyFilterCondition'}, + } + + def __init__( + self, + **kwargs + ): + super(DetectionAnomalyResultQuery, self).__init__(**kwargs) + self.start_time = kwargs['start_time'] + self.end_time = kwargs['end_time'] + self.filter = kwargs.get('filter', None) + + +class DetectionIncidentFilterCondition(msrest.serialization.Model): + """DetectionIncidentFilterCondition. + + :param dimension_filter: dimension filter. + :type dimension_filter: list[~azure.ai.metricsadvisor.models.DimensionGroupIdentity] + """ + + _validation = { + 'dimension_filter': {'unique': True}, + } + + _attribute_map = { + 'dimension_filter': {'key': 'dimensionFilter', 'type': '[DimensionGroupIdentity]'}, + } + + def __init__( + self, + **kwargs + ): + super(DetectionIncidentFilterCondition, self).__init__(**kwargs) + self.dimension_filter = kwargs.get('dimension_filter', None) + + +class DetectionIncidentResultQuery(msrest.serialization.Model): + """DetectionIncidentResultQuery. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. start time. + :type start_time: ~datetime.datetime + :param end_time: Required. end time. + :type end_time: ~datetime.datetime + :param filter: + :type filter: ~azure.ai.metricsadvisor.models.DetectionIncidentFilterCondition + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'filter': {'key': 'filter', 'type': 'DetectionIncidentFilterCondition'}, + } + + def __init__( + self, + **kwargs + ): + super(DetectionIncidentResultQuery, self).__init__(**kwargs) + self.start_time = kwargs['start_time'] + self.end_time = kwargs['end_time'] + self.filter = kwargs.get('filter', None) + + +class DetectionSeriesQuery(msrest.serialization.Model): + """DetectionSeriesQuery. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. start time. + :type start_time: ~datetime.datetime + :param end_time: Required. end time. + :type end_time: ~datetime.datetime + :param series: Required. series. + :type series: list[~azure.ai.metricsadvisor.models.SeriesIdentity] + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + 'series': {'required': True, 'unique': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'series': {'key': 'series', 'type': '[SeriesIdentity]'}, + } + + def __init__( + self, + **kwargs + ): + super(DetectionSeriesQuery, self).__init__(**kwargs) + self.start_time = kwargs['start_time'] + self.end_time = kwargs['end_time'] + self.series = kwargs['series'] + + +class Dimension(msrest.serialization.Model): + """Dimension. + + All required parameters must be populated in order to send to Azure. + + :param dimension_name: Required. dimension name. + :type dimension_name: str + :param dimension_display_name: dimension display name. + :type dimension_display_name: str + """ + + _validation = { + 'dimension_name': {'required': True}, + 'dimension_display_name': {'pattern': r'[.a-zA-Z0-9_-]+'}, + } + + _attribute_map = { + 'dimension_name': {'key': 'dimensionName', 'type': 'str'}, + 'dimension_display_name': {'key': 'dimensionDisplayName', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(Dimension, self).__init__(**kwargs) + self.dimension_name = kwargs['dimension_name'] + self.dimension_display_name = kwargs.get('dimension_display_name', None) + + +class DimensionGroupConfiguration(msrest.serialization.Model): + """DimensionGroupConfiguration. + + All required parameters must be populated in order to send to Azure. + + :param group: Required. + :type group: ~azure.ai.metricsadvisor.models.DimensionGroupIdentity + :param condition_operator: condition operator + + should be specified when combining multiple detection conditions. Possible values include: + "AND", "OR". + :type condition_operator: str or + ~azure.ai.metricsadvisor.models.DimensionGroupConfigurationConditionOperator + :param smart_detection_condition: + :type smart_detection_condition: ~azure.ai.metricsadvisor.models.SmartDetectionCondition + :param hard_threshold_condition: + :type hard_threshold_condition: ~azure.ai.metricsadvisor.models.HardThresholdCondition + :param change_threshold_condition: + :type change_threshold_condition: ~azure.ai.metricsadvisor.models.ChangeThresholdCondition + """ + + _validation = { + 'group': {'required': True}, + } + + _attribute_map = { + 'group': {'key': 'group', 'type': 'DimensionGroupIdentity'}, + 'condition_operator': {'key': 'conditionOperator', 'type': 'str'}, + 'smart_detection_condition': {'key': 'smartDetectionCondition', 'type': 'SmartDetectionCondition'}, + 'hard_threshold_condition': {'key': 'hardThresholdCondition', 'type': 'HardThresholdCondition'}, + 'change_threshold_condition': {'key': 'changeThresholdCondition', 'type': 'ChangeThresholdCondition'}, + } + + def __init__( + self, + **kwargs + ): + super(DimensionGroupConfiguration, self).__init__(**kwargs) + self.group = kwargs['group'] + self.condition_operator = kwargs.get('condition_operator', None) + self.smart_detection_condition = kwargs.get('smart_detection_condition', None) + self.hard_threshold_condition = kwargs.get('hard_threshold_condition', None) + self.change_threshold_condition = kwargs.get('change_threshold_condition', None) + + +class DimensionGroupIdentity(msrest.serialization.Model): + """DimensionGroupIdentity. + + All required parameters must be populated in order to send to Azure. + + :param dimension: Required. dimension specified for series group. + :type dimension: dict[str, str] + """ + + _validation = { + 'dimension': {'required': True}, + } + + _attribute_map = { + 'dimension': {'key': 'dimension', 'type': '{str}'}, + } + + def __init__( + self, + **kwargs + ): + super(DimensionGroupIdentity, self).__init__(**kwargs) + self.dimension = kwargs['dimension'] + + +class ElasticsearchDataFeed(DataFeedDetail): + """ElasticsearchDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.ElasticsearchParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'ElasticsearchParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(ElasticsearchDataFeed, self).__init__(**kwargs) + self.data_source_type = 'Elasticsearch' # type: str + self.data_source_parameter = kwargs['data_source_parameter'] + + +class ElasticsearchDataFeedPatch(DataFeedDetailPatch): + """ElasticsearchDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.ElasticsearchParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'ElasticsearchParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(ElasticsearchDataFeedPatch, self).__init__(**kwargs) + self.data_source_type = 'Elasticsearch' # type: str + self.data_source_parameter = kwargs.get('data_source_parameter', None) + + +class ElasticsearchParameter(msrest.serialization.Model): + """ElasticsearchParameter. + + All required parameters must be populated in order to send to Azure. + + :param host: Required. Host. + :type host: str + :param port: Required. Port. + :type port: str + :param auth_header: Required. Authorization header. + :type auth_header: str + :param query: Required. Query. + :type query: str + """ + + _validation = { + 'host': {'required': True}, + 'port': {'required': True}, + 'auth_header': {'required': True}, + 'query': {'required': True}, + } + + _attribute_map = { + 'host': {'key': 'host', 'type': 'str'}, + 'port': {'key': 'port', 'type': 'str'}, + 'auth_header': {'key': 'authHeader', 'type': 'str'}, + 'query': {'key': 'query', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(ElasticsearchParameter, self).__init__(**kwargs) + self.host = kwargs['host'] + self.port = kwargs['port'] + self.auth_header = kwargs['auth_header'] + self.query = kwargs['query'] + + +class HookInfo(msrest.serialization.Model): + """HookInfo. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: EmailHookInfo, WebhookHookInfo. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param hook_type: Required. hook type.Constant filled by server. Possible values include: + "Webhook", "Email". + :type hook_type: str or ~azure.ai.metricsadvisor.models.HookType + :ivar hook_id: Hook unique id. + :vartype hook_id: str + :param hook_name: Required. hook unique name. + :type hook_name: str + :param description: hook description. + :type description: str + :param external_link: hook external link. + :type external_link: str + :ivar admins: hook administrators. + :vartype admins: list[str] + """ + + _validation = { + 'hook_type': {'required': True}, + 'hook_id': {'readonly': True}, + 'hook_name': {'required': True}, + 'admins': {'readonly': True, 'unique': True}, + } + + _attribute_map = { + 'hook_type': {'key': 'hookType', 'type': 'str'}, + 'hook_id': {'key': 'hookId', 'type': 'str'}, + 'hook_name': {'key': 'hookName', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'external_link': {'key': 'externalLink', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + } + + _subtype_map = { + 'hook_type': {'Email': 'EmailHookInfo', 'Webhook': 'WebhookHookInfo'} + } + + def __init__( + self, + **kwargs + ): + super(HookInfo, self).__init__(**kwargs) + self.hook_type = None # type: Optional[str] + self.hook_id = None + self.hook_name = kwargs['hook_name'] + self.description = kwargs.get('description', None) + self.external_link = kwargs.get('external_link', None) + self.admins = None + + +class EmailHookInfo(HookInfo): + """EmailHookInfo. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param hook_type: Required. hook type.Constant filled by server. Possible values include: + "Webhook", "Email". + :type hook_type: str or ~azure.ai.metricsadvisor.models.HookType + :ivar hook_id: Hook unique id. + :vartype hook_id: str + :param hook_name: Required. hook unique name. + :type hook_name: str + :param description: hook description. + :type description: str + :param external_link: hook external link. + :type external_link: str + :ivar admins: hook administrators. + :vartype admins: list[str] + :param hook_parameter: Required. + :type hook_parameter: ~azure.ai.metricsadvisor.models.EmailHookParameter + """ + + _validation = { + 'hook_type': {'required': True}, + 'hook_id': {'readonly': True}, + 'hook_name': {'required': True}, + 'admins': {'readonly': True, 'unique': True}, + 'hook_parameter': {'required': True}, + } + + _attribute_map = { + 'hook_type': {'key': 'hookType', 'type': 'str'}, + 'hook_id': {'key': 'hookId', 'type': 'str'}, + 'hook_name': {'key': 'hookName', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'external_link': {'key': 'externalLink', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'hook_parameter': {'key': 'hookParameter', 'type': 'EmailHookParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(EmailHookInfo, self).__init__(**kwargs) + self.hook_type = 'Email' # type: str + self.hook_parameter = kwargs['hook_parameter'] + + +class HookInfoPatch(msrest.serialization.Model): + """HookInfoPatch. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: EmailHookInfoPatch, WebhookHookInfoPatch. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param hook_type: Required. hook type.Constant filled by server. Possible values include: + "Webhook", "Email". + :type hook_type: str or ~azure.ai.metricsadvisor.models.HookInfoPatchHookType + :param hook_name: hook unique name. + :type hook_name: str + :param description: hook description. + :type description: str + :param external_link: hook external link. + :type external_link: str + :ivar admins: hook administrators. + :vartype admins: list[str] + """ + + _validation = { + 'hook_type': {'required': True}, + 'admins': {'readonly': True, 'unique': True}, + } + + _attribute_map = { + 'hook_type': {'key': 'hookType', 'type': 'str'}, + 'hook_name': {'key': 'hookName', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'external_link': {'key': 'externalLink', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + } + + _subtype_map = { + 'hook_type': {'Email': 'EmailHookInfoPatch', 'Webhook': 'WebhookHookInfoPatch'} + } + + def __init__( + self, + **kwargs + ): + super(HookInfoPatch, self).__init__(**kwargs) + self.hook_type = None # type: Optional[str] + self.hook_name = kwargs.get('hook_name', None) + self.description = kwargs.get('description', None) + self.external_link = kwargs.get('external_link', None) + self.admins = None + + +class EmailHookInfoPatch(HookInfoPatch): + """EmailHookInfoPatch. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param hook_type: Required. hook type.Constant filled by server. Possible values include: + "Webhook", "Email". + :type hook_type: str or ~azure.ai.metricsadvisor.models.HookInfoPatchHookType + :param hook_name: hook unique name. + :type hook_name: str + :param description: hook description. + :type description: str + :param external_link: hook external link. + :type external_link: str + :ivar admins: hook administrators. + :vartype admins: list[str] + :param hook_parameter: + :type hook_parameter: ~azure.ai.metricsadvisor.models.EmailHookParameter + """ + + _validation = { + 'hook_type': {'required': True}, + 'admins': {'readonly': True, 'unique': True}, + } + + _attribute_map = { + 'hook_type': {'key': 'hookType', 'type': 'str'}, + 'hook_name': {'key': 'hookName', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'external_link': {'key': 'externalLink', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'hook_parameter': {'key': 'hookParameter', 'type': 'EmailHookParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(EmailHookInfoPatch, self).__init__(**kwargs) + self.hook_type = 'Email' # type: str + self.hook_parameter = kwargs.get('hook_parameter', None) + + +class EmailHookParameter(msrest.serialization.Model): + """EmailHookParameter. + + All required parameters must be populated in order to send to Azure. + + :param to_list: Required. Email TO: list. + :type to_list: list[str] + """ + + _validation = { + 'to_list': {'required': True, 'unique': True}, + } + + _attribute_map = { + 'to_list': {'key': 'toList', 'type': '[str]'}, + } + + def __init__( + self, + **kwargs + ): + super(EmailHookParameter, self).__init__(**kwargs) + self.to_list = kwargs['to_list'] + + +class EnrichmentStatus(msrest.serialization.Model): + """EnrichmentStatus. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar timestamp: data slice timestamp. + :vartype timestamp: ~datetime.datetime + :ivar status: latest enrichment status for this data slice. + :vartype status: str + :ivar message: the trimmed message describes details of the enrichment status. + :vartype message: str + """ + + _validation = { + 'timestamp': {'readonly': True}, + 'status': {'readonly': True}, + 'message': {'readonly': True}, + } + + _attribute_map = { + 'timestamp': {'key': 'timestamp', 'type': 'iso-8601'}, + 'status': {'key': 'status', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(EnrichmentStatus, self).__init__(**kwargs) + self.timestamp = None + self.status = None + self.message = None + + +class EnrichmentStatusList(msrest.serialization.Model): + """EnrichmentStatusList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar next_link: + :vartype next_link: str + :ivar value: + :vartype value: list[~azure.ai.metricsadvisor.models.EnrichmentStatus] + """ + + _validation = { + 'next_link': {'readonly': True}, + 'value': {'readonly': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[EnrichmentStatus]'}, + } + + def __init__( + self, + **kwargs + ): + super(EnrichmentStatusList, self).__init__(**kwargs) + self.next_link = None + self.value = None + + +class EnrichmentStatusQueryOption(msrest.serialization.Model): + """EnrichmentStatusQueryOption. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. the start point of time range to query anomaly detection status. + :type start_time: ~datetime.datetime + :param end_time: Required. the end point of time range to query anomaly detection status. + :type end_time: ~datetime.datetime + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + } + + def __init__( + self, + **kwargs + ): + super(EnrichmentStatusQueryOption, self).__init__(**kwargs) + self.start_time = kwargs['start_time'] + self.end_time = kwargs['end_time'] + + +class ErrorCode(msrest.serialization.Model): + """ErrorCode. + + :param message: + :type message: str + :param code: + :type code: str + """ + + _attribute_map = { + 'message': {'key': 'message', 'type': 'str'}, + 'code': {'key': 'code', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(ErrorCode, self).__init__(**kwargs) + self.message = kwargs.get('message', None) + self.code = kwargs.get('code', None) + + +class FeedbackDimensionFilter(msrest.serialization.Model): + """FeedbackDimensionFilter. + + All required parameters must be populated in order to send to Azure. + + :param dimension: Required. metric dimension filter. + :type dimension: dict[str, str] + """ + + _validation = { + 'dimension': {'required': True}, + } + + _attribute_map = { + 'dimension': {'key': 'dimension', 'type': '{str}'}, + } + + def __init__( + self, + **kwargs + ): + super(FeedbackDimensionFilter, self).__init__(**kwargs) + self.dimension = kwargs['dimension'] + + +class HardThresholdCondition(msrest.serialization.Model): + """HardThresholdCondition. + + All required parameters must be populated in order to send to Azure. + + :param lower_bound: lower bound + + should be specified when anomalyDetectorDirection is Both or Down. + :type lower_bound: float + :param upper_bound: upper bound + + should be specified when anomalyDetectorDirection is Both or Up. + :type upper_bound: float + :param anomaly_detector_direction: Required. detection direction. Possible values include: + "Both", "Down", "Up". + :type anomaly_detector_direction: str or + ~azure.ai.metricsadvisor.models.AnomalyDetectorDirection + :param suppress_condition: Required. + :type suppress_condition: ~azure.ai.metricsadvisor.models.SuppressCondition + """ + + _validation = { + 'anomaly_detector_direction': {'required': True}, + 'suppress_condition': {'required': True}, + } + + _attribute_map = { + 'lower_bound': {'key': 'lowerBound', 'type': 'float'}, + 'upper_bound': {'key': 'upperBound', 'type': 'float'}, + 'anomaly_detector_direction': {'key': 'anomalyDetectorDirection', 'type': 'str'}, + 'suppress_condition': {'key': 'suppressCondition', 'type': 'SuppressCondition'}, + } + + def __init__( + self, + **kwargs + ): + super(HardThresholdCondition, self).__init__(**kwargs) + self.lower_bound = kwargs.get('lower_bound', None) + self.upper_bound = kwargs.get('upper_bound', None) + self.anomaly_detector_direction = kwargs['anomaly_detector_direction'] + self.suppress_condition = kwargs['suppress_condition'] + + +class HookList(msrest.serialization.Model): + """HookList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar next_link: + :vartype next_link: str + :ivar value: + :vartype value: list[~azure.ai.metricsadvisor.models.HookInfo] + """ + + _validation = { + 'next_link': {'readonly': True}, + 'value': {'readonly': True, 'unique': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[HookInfo]'}, + } + + def __init__( + self, + **kwargs + ): + super(HookList, self).__init__(**kwargs) + self.next_link = None + self.value = None + + +class HttpRequestDataFeed(DataFeedDetail): + """HttpRequestDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.HttpRequestParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'HttpRequestParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(HttpRequestDataFeed, self).__init__(**kwargs) + self.data_source_type = 'HttpRequest' # type: str + self.data_source_parameter = kwargs['data_source_parameter'] + + +class HttpRequestDataFeedPatch(DataFeedDetailPatch): + """HttpRequestDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.HttpRequestParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'HttpRequestParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(HttpRequestDataFeedPatch, self).__init__(**kwargs) + self.data_source_type = 'HttpRequest' # type: str + self.data_source_parameter = kwargs.get('data_source_parameter', None) + + +class HttpRequestParameter(msrest.serialization.Model): + """HttpRequestParameter. + + All required parameters must be populated in order to send to Azure. + + :param url: Required. HTTP URL. + :type url: str + :param http_header: Required. HTTP header. + :type http_header: str + :param http_method: Required. HTTP method. + :type http_method: str + :param payload: Required. HTTP reuqest body. + :type payload: str + """ + + _validation = { + 'url': {'required': True}, + 'http_header': {'required': True}, + 'http_method': {'required': True}, + 'payload': {'required': True}, + } + + _attribute_map = { + 'url': {'key': 'url', 'type': 'str'}, + 'http_header': {'key': 'httpHeader', 'type': 'str'}, + 'http_method': {'key': 'httpMethod', 'type': 'str'}, + 'payload': {'key': 'payload', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(HttpRequestParameter, self).__init__(**kwargs) + self.url = kwargs['url'] + self.http_header = kwargs['http_header'] + self.http_method = kwargs['http_method'] + self.payload = kwargs['payload'] + + +class IncidentProperty(msrest.serialization.Model): + """IncidentProperty. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param max_severity: Required. max severity of latest anomalies in the incident. Possible + values include: "Low", "Medium", "High". + :type max_severity: str or ~azure.ai.metricsadvisor.models.Severity + :ivar incident_status: incident status + + only return for alerting incident result. Possible values include: "Active", "Resolved". + :vartype incident_status: str or ~azure.ai.metricsadvisor.models.IncidentPropertyIncidentStatus + """ + + _validation = { + 'max_severity': {'required': True}, + 'incident_status': {'readonly': True}, + } + + _attribute_map = { + 'max_severity': {'key': 'maxSeverity', 'type': 'str'}, + 'incident_status': {'key': 'incidentStatus', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(IncidentProperty, self).__init__(**kwargs) + self.max_severity = kwargs['max_severity'] + self.incident_status = None + + +class IncidentResult(msrest.serialization.Model): + """IncidentResult. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar metric_id: metric unique id + + only return for alerting incident result. + :vartype metric_id: str + :ivar anomaly_detection_configuration_id: anomaly detection configuration unique id + + only return for alerting incident result. + :vartype anomaly_detection_configuration_id: str + :param incident_id: Required. incident id. + :type incident_id: str + :param start_time: Required. incident start time. + :type start_time: ~datetime.datetime + :param last_time: Required. incident last time. + :type last_time: ~datetime.datetime + :param root_node: Required. + :type root_node: ~azure.ai.metricsadvisor.models.SeriesIdentity + :param property: Required. + :type property: ~azure.ai.metricsadvisor.models.IncidentProperty + """ + + _validation = { + 'metric_id': {'readonly': True}, + 'anomaly_detection_configuration_id': {'readonly': True}, + 'incident_id': {'required': True}, + 'start_time': {'required': True}, + 'last_time': {'required': True}, + 'root_node': {'required': True}, + 'property': {'required': True}, + } + + _attribute_map = { + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'anomaly_detection_configuration_id': {'key': 'anomalyDetectionConfigurationId', 'type': 'str'}, + 'incident_id': {'key': 'incidentId', 'type': 'str'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'last_time': {'key': 'lastTime', 'type': 'iso-8601'}, + 'root_node': {'key': 'rootNode', 'type': 'SeriesIdentity'}, + 'property': {'key': 'property', 'type': 'IncidentProperty'}, + } + + def __init__( + self, + **kwargs + ): + super(IncidentResult, self).__init__(**kwargs) + self.metric_id = None + self.anomaly_detection_configuration_id = None + self.incident_id = kwargs['incident_id'] + self.start_time = kwargs['start_time'] + self.last_time = kwargs['last_time'] + self.root_node = kwargs['root_node'] + self.property = kwargs['property'] + + +class IncidentResultList(msrest.serialization.Model): + """IncidentResultList. + + All required parameters must be populated in order to send to Azure. + + :param next_link: Required. + :type next_link: str + :param value: Required. + :type value: list[~azure.ai.metricsadvisor.models.IncidentResult] + """ + + _validation = { + 'next_link': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[IncidentResult]'}, + } + + def __init__( + self, + **kwargs + ): + super(IncidentResultList, self).__init__(**kwargs) + self.next_link = kwargs['next_link'] + self.value = kwargs['value'] + + +class InfluxDBDataFeed(DataFeedDetail): + """InfluxDBDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.InfluxDBParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'InfluxDBParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(InfluxDBDataFeed, self).__init__(**kwargs) + self.data_source_type = 'InfluxDB' # type: str + self.data_source_parameter = kwargs['data_source_parameter'] + + +class InfluxDBDataFeedPatch(DataFeedDetailPatch): + """InfluxDBDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.InfluxDBParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'InfluxDBParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(InfluxDBDataFeedPatch, self).__init__(**kwargs) + self.data_source_type = 'InfluxDB' # type: str + self.data_source_parameter = kwargs.get('data_source_parameter', None) + + +class InfluxDBParameter(msrest.serialization.Model): + """InfluxDBParameter. + + All required parameters must be populated in order to send to Azure. + + :param connection_string: Required. InfluxDB connection string. + :type connection_string: str + :param database: Required. Database name. + :type database: str + :param user_name: Required. Database access user. + :type user_name: str + :param password: Required. Database access password. + :type password: str + :param query: Required. Query script. + :type query: str + """ + + _validation = { + 'connection_string': {'required': True}, + 'database': {'required': True}, + 'user_name': {'required': True}, + 'password': {'required': True}, + 'query': {'required': True}, + } + + _attribute_map = { + 'connection_string': {'key': 'connectionString', 'type': 'str'}, + 'database': {'key': 'database', 'type': 'str'}, + 'user_name': {'key': 'userName', 'type': 'str'}, + 'password': {'key': 'password', 'type': 'str'}, + 'query': {'key': 'query', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(InfluxDBParameter, self).__init__(**kwargs) + self.connection_string = kwargs['connection_string'] + self.database = kwargs['database'] + self.user_name = kwargs['user_name'] + self.password = kwargs['password'] + self.query = kwargs['query'] + + +class IngestionProgressResetOptions(msrest.serialization.Model): + """IngestionProgressResetOptions. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. the start point of time range to reset data ingestion status. + :type start_time: ~datetime.datetime + :param end_time: Required. the end point of time range to reset data ingestion status. + :type end_time: ~datetime.datetime + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + } + + def __init__( + self, + **kwargs + ): + super(IngestionProgressResetOptions, self).__init__(**kwargs) + self.start_time = kwargs['start_time'] + self.end_time = kwargs['end_time'] + + +class IngestionStatus(msrest.serialization.Model): + """IngestionStatus. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar timestamp: data slice timestamp. + :vartype timestamp: ~datetime.datetime + :ivar status: latest ingestion task status for this data slice. Possible values include: + "NotStarted", "Scheduled", "Running", "Succeeded", "Failed", "NoData", "Error", "Paused". + :vartype status: str or ~azure.ai.metricsadvisor.models.IngestionStatusType + :ivar message: the trimmed message of last ingestion job. + :vartype message: str + """ + + _validation = { + 'timestamp': {'readonly': True}, + 'status': {'readonly': True}, + 'message': {'readonly': True}, + } + + _attribute_map = { + 'timestamp': {'key': 'timestamp', 'type': 'iso-8601'}, + 'status': {'key': 'status', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(IngestionStatus, self).__init__(**kwargs) + self.timestamp = None + self.status = None + self.message = None + + +class IngestionStatusList(msrest.serialization.Model): + """IngestionStatusList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar next_link: + :vartype next_link: str + :ivar value: + :vartype value: list[~azure.ai.metricsadvisor.models.IngestionStatus] + """ + + _validation = { + 'next_link': {'readonly': True}, + 'value': {'readonly': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[IngestionStatus]'}, + } + + def __init__( + self, + **kwargs + ): + super(IngestionStatusList, self).__init__(**kwargs) + self.next_link = None + self.value = None + + +class IngestionStatusQueryOptions(msrest.serialization.Model): + """IngestionStatusQueryOptions. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. the start point of time range to query data ingestion status. + :type start_time: ~datetime.datetime + :param end_time: Required. the end point of time range to query data ingestion status. + :type end_time: ~datetime.datetime + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + } + + def __init__( + self, + **kwargs + ): + super(IngestionStatusQueryOptions, self).__init__(**kwargs) + self.start_time = kwargs['start_time'] + self.end_time = kwargs['end_time'] + + +class Metric(msrest.serialization.Model): + """Metric. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar metric_id: metric id. + :vartype metric_id: str + :param metric_name: Required. metric name. + :type metric_name: str + :param metric_display_name: metric display name. + :type metric_display_name: str + :param metric_description: metric description. + :type metric_description: str + """ + + _validation = { + 'metric_id': {'readonly': True}, + 'metric_name': {'required': True}, + 'metric_display_name': {'pattern': r'[.a-zA-Z0-9_-]+'}, + } + + _attribute_map = { + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'metric_name': {'key': 'metricName', 'type': 'str'}, + 'metric_display_name': {'key': 'metricDisplayName', 'type': 'str'}, + 'metric_description': {'key': 'metricDescription', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(Metric, self).__init__(**kwargs) + self.metric_id = None + self.metric_name = kwargs['metric_name'] + self.metric_display_name = kwargs.get('metric_display_name', None) + self.metric_description = kwargs.get('metric_description', None) + + +class MetricAlertingConfiguration(msrest.serialization.Model): + """MetricAlertingConfiguration. + + All required parameters must be populated in order to send to Azure. + + :param anomaly_detection_configuration_id: Required. Anomaly detection configuration unique id. + :type anomaly_detection_configuration_id: str + :param anomaly_scope_type: Required. Anomaly scope. Possible values include: "All", + "Dimension", "TopN". + :type anomaly_scope_type: str or ~azure.ai.metricsadvisor.models.AnomalyScope + :param negation_operation: Negation operation. + :type negation_operation: bool + :param dimension_anomaly_scope: + :type dimension_anomaly_scope: ~azure.ai.metricsadvisor.models.DimensionGroupIdentity + :param top_n_anomaly_scope: + :type top_n_anomaly_scope: ~azure.ai.metricsadvisor.models.TopNGroupScope + :param severity_filter: + :type severity_filter: ~azure.ai.metricsadvisor.models.SeverityCondition + :param snooze_filter: + :type snooze_filter: ~azure.ai.metricsadvisor.models.AlertSnoozeCondition + :param value_filter: + :type value_filter: ~azure.ai.metricsadvisor.models.ValueCondition + """ + + _validation = { + 'anomaly_detection_configuration_id': {'required': True}, + 'anomaly_scope_type': {'required': True}, + } + + _attribute_map = { + 'anomaly_detection_configuration_id': {'key': 'anomalyDetectionConfigurationId', 'type': 'str'}, + 'anomaly_scope_type': {'key': 'anomalyScopeType', 'type': 'str'}, + 'negation_operation': {'key': 'negationOperation', 'type': 'bool'}, + 'dimension_anomaly_scope': {'key': 'dimensionAnomalyScope', 'type': 'DimensionGroupIdentity'}, + 'top_n_anomaly_scope': {'key': 'topNAnomalyScope', 'type': 'TopNGroupScope'}, + 'severity_filter': {'key': 'severityFilter', 'type': 'SeverityCondition'}, + 'snooze_filter': {'key': 'snoozeFilter', 'type': 'AlertSnoozeCondition'}, + 'value_filter': {'key': 'valueFilter', 'type': 'ValueCondition'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricAlertingConfiguration, self).__init__(**kwargs) + self.anomaly_detection_configuration_id = kwargs['anomaly_detection_configuration_id'] + self.anomaly_scope_type = kwargs['anomaly_scope_type'] + self.negation_operation = kwargs.get('negation_operation', None) + self.dimension_anomaly_scope = kwargs.get('dimension_anomaly_scope', None) + self.top_n_anomaly_scope = kwargs.get('top_n_anomaly_scope', None) + self.severity_filter = kwargs.get('severity_filter', None) + self.snooze_filter = kwargs.get('snooze_filter', None) + self.value_filter = kwargs.get('value_filter', None) + + +class MetricDataItem(msrest.serialization.Model): + """MetricDataItem. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param id: + :type id: ~azure.ai.metricsadvisor.models.MetricSeriesItem + :ivar timestamp_list: timestamps of the data related to this time series. + :vartype timestamp_list: list[~datetime.datetime] + :ivar value_list: values of the data related to this time series. + :vartype value_list: list[float] + """ + + _validation = { + 'timestamp_list': {'readonly': True}, + 'value_list': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'MetricSeriesItem'}, + 'timestamp_list': {'key': 'timestampList', 'type': '[iso-8601]'}, + 'value_list': {'key': 'valueList', 'type': '[float]'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricDataItem, self).__init__(**kwargs) + self.id = kwargs.get('id', None) + self.timestamp_list = None + self.value_list = None + + +class MetricDataList(msrest.serialization.Model): + """MetricDataList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: + :vartype value: list[~azure.ai.metricsadvisor.models.MetricDataItem] + """ + + _validation = { + 'value': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[MetricDataItem]'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricDataList, self).__init__(**kwargs) + self.value = None + + +class MetricDataQueryOptions(msrest.serialization.Model): + """MetricDataQueryOptions. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. start time of query a time series data, and format should be yyyy- + MM-ddThh:mm:ssZ. + :type start_time: ~datetime.datetime + :param end_time: Required. start time of query a time series data, and format should be yyyy- + MM-ddThh:mm:ssZ. + :type end_time: ~datetime.datetime + :param series: Required. query specific series. + :type series: list[dict[str, str]] + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + 'series': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'series': {'key': 'series', 'type': '[{str}]'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricDataQueryOptions, self).__init__(**kwargs) + self.start_time = kwargs['start_time'] + self.end_time = kwargs['end_time'] + self.series = kwargs['series'] + + +class MetricDimensionList(msrest.serialization.Model): + """MetricDimensionList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar next_link: + :vartype next_link: str + :ivar value: + :vartype value: list[str] + """ + + _validation = { + 'next_link': {'readonly': True}, + 'value': {'readonly': True, 'unique': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[str]'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricDimensionList, self).__init__(**kwargs) + self.next_link = None + self.value = None + + +class MetricDimensionQueryOptions(msrest.serialization.Model): + """MetricDimensionQueryOptions. + + All required parameters must be populated in order to send to Azure. + + :param dimension_name: Required. dimension name. + :type dimension_name: str + :param dimension_value_filter: dimension value to be filtered. + :type dimension_value_filter: str + """ + + _validation = { + 'dimension_name': {'required': True}, + } + + _attribute_map = { + 'dimension_name': {'key': 'dimensionName', 'type': 'str'}, + 'dimension_value_filter': {'key': 'dimensionValueFilter', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricDimensionQueryOptions, self).__init__(**kwargs) + self.dimension_name = kwargs['dimension_name'] + self.dimension_value_filter = kwargs.get('dimension_value_filter', None) + + +class MetricFeedbackFilter(msrest.serialization.Model): + """MetricFeedbackFilter. + + All required parameters must be populated in order to send to Azure. + + :param metric_id: Required. filter feedbacks by metric id. + :type metric_id: str + :param dimension_filter: + :type dimension_filter: ~azure.ai.metricsadvisor.models.FeedbackDimensionFilter + :param feedback_type: filter feedbacks by type. Possible values include: "Anomaly", + "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :param start_time: start time filter under chosen time mode. + :type start_time: ~datetime.datetime + :param end_time: end time filter under chosen time mode. + :type end_time: ~datetime.datetime + :param time_mode: time mode to filter feedback. Possible values include: "MetricTimestamp", + "FeedbackCreatedTime". + :type time_mode: str or ~azure.ai.metricsadvisor.models.FeedbackQueryTimeMode + """ + + _validation = { + 'metric_id': {'required': True}, + } + + _attribute_map = { + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': 'FeedbackDimensionFilter'}, + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'time_mode': {'key': 'timeMode', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricFeedbackFilter, self).__init__(**kwargs) + self.metric_id = kwargs['metric_id'] + self.dimension_filter = kwargs.get('dimension_filter', None) + self.feedback_type = kwargs.get('feedback_type', None) + self.start_time = kwargs.get('start_time', None) + self.end_time = kwargs.get('end_time', None) + self.time_mode = kwargs.get('time_mode', None) + + +class MetricFeedbackList(msrest.serialization.Model): + """MetricFeedbackList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar next_link: + :vartype next_link: str + :ivar value: + :vartype value: list[~azure.ai.metricsadvisor.models.MetricFeedback] + """ + + _validation = { + 'next_link': {'readonly': True}, + 'value': {'readonly': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[MetricFeedback]'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricFeedbackList, self).__init__(**kwargs) + self.next_link = None + self.value = None + + +class MetricSeriesItem(msrest.serialization.Model): + """MetricSeriesItem. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar metric_id: metric unique id. + :vartype metric_id: str + :ivar dimension: dimension name and value pair. + :vartype dimension: dict[str, str] + """ + + _validation = { + 'metric_id': {'readonly': True}, + 'dimension': {'readonly': True}, + } + + _attribute_map = { + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension': {'key': 'dimension', 'type': '{str}'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricSeriesItem, self).__init__(**kwargs) + self.metric_id = None + self.dimension = None + + +class MetricSeriesList(msrest.serialization.Model): + """MetricSeriesList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar next_link: + :vartype next_link: str + :ivar value: + :vartype value: list[~azure.ai.metricsadvisor.models.MetricSeriesItem] + """ + + _validation = { + 'next_link': {'readonly': True}, + 'value': {'readonly': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[MetricSeriesItem]'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricSeriesList, self).__init__(**kwargs) + self.next_link = None + self.value = None + + +class MetricSeriesQueryOptions(msrest.serialization.Model): + """MetricSeriesQueryOptions. + + All required parameters must be populated in order to send to Azure. + + :param active_since: Required. query series ingested after this time, the format should be + yyyy-MM-ddTHH:mm:ssZ. + :type active_since: ~datetime.datetime + :param dimension_filter: filter specfic dimension name and values. + :type dimension_filter: dict[str, list[str]] + """ + + _validation = { + 'active_since': {'required': True}, + } + + _attribute_map = { + 'active_since': {'key': 'activeSince', 'type': 'iso-8601'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': '{[str]}'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricSeriesQueryOptions, self).__init__(**kwargs) + self.active_since = kwargs['active_since'] + self.dimension_filter = kwargs.get('dimension_filter', None) + + +class MongoDBDataFeed(DataFeedDetail): + """MongoDBDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.MongoDBParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'MongoDBParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(MongoDBDataFeed, self).__init__(**kwargs) + self.data_source_type = 'MongoDB' # type: str + self.data_source_parameter = kwargs['data_source_parameter'] + + +class MongoDBDataFeedPatch(DataFeedDetailPatch): + """MongoDBDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.MongoDBParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'MongoDBParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(MongoDBDataFeedPatch, self).__init__(**kwargs) + self.data_source_type = 'MongoDB' # type: str + self.data_source_parameter = kwargs.get('data_source_parameter', None) + + +class MongoDBParameter(msrest.serialization.Model): + """MongoDBParameter. + + All required parameters must be populated in order to send to Azure. + + :param connection_string: Required. MongoDB connection string. + :type connection_string: str + :param database: Required. Database name. + :type database: str + :param command: Required. Query script. + :type command: str + """ + + _validation = { + 'connection_string': {'required': True}, + 'database': {'required': True}, + 'command': {'required': True}, + } + + _attribute_map = { + 'connection_string': {'key': 'connectionString', 'type': 'str'}, + 'database': {'key': 'database', 'type': 'str'}, + 'command': {'key': 'command', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(MongoDBParameter, self).__init__(**kwargs) + self.connection_string = kwargs['connection_string'] + self.database = kwargs['database'] + self.command = kwargs['command'] + + +class MySqlDataFeed(DataFeedDetail): + """MySqlDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(MySqlDataFeed, self).__init__(**kwargs) + self.data_source_type = 'MySql' # type: str + self.data_source_parameter = kwargs['data_source_parameter'] + + +class MySqlDataFeedPatch(DataFeedDetailPatch): + """MySqlDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(MySqlDataFeedPatch, self).__init__(**kwargs) + self.data_source_type = 'MySql' # type: str + self.data_source_parameter = kwargs.get('data_source_parameter', None) + + +class PeriodFeedback(MetricFeedback): + """PeriodFeedback. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param feedback_type: Required. feedback type.Constant filled by server. Possible values + include: "Anomaly", "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :ivar feedback_id: feedback unique id. + :vartype feedback_id: str + :ivar created_time: feedback created time. + :vartype created_time: ~datetime.datetime + :ivar user_principal: user who gives this feedback. + :vartype user_principal: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param dimension_filter: Required. + :type dimension_filter: ~azure.ai.metricsadvisor.models.FeedbackDimensionFilter + :param value: Required. + :type value: ~azure.ai.metricsadvisor.models.PeriodFeedbackValue + """ + + _validation = { + 'feedback_type': {'required': True}, + 'feedback_id': {'readonly': True}, + 'created_time': {'readonly': True}, + 'user_principal': {'readonly': True}, + 'metric_id': {'required': True}, + 'dimension_filter': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'feedback_id': {'key': 'feedbackId', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'user_principal': {'key': 'userPrincipal', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': 'FeedbackDimensionFilter'}, + 'value': {'key': 'value', 'type': 'PeriodFeedbackValue'}, + } + + def __init__( + self, + **kwargs + ): + super(PeriodFeedback, self).__init__(**kwargs) + self.feedback_type = 'Period' # type: str + self.value = kwargs['value'] + + +class PeriodFeedbackValue(msrest.serialization.Model): + """PeriodFeedbackValue. + + All required parameters must be populated in order to send to Azure. + + :param period_type: Required. the type of setting period. Possible values include: + "AutoDetect", "AssignValue". + :type period_type: str or ~azure.ai.metricsadvisor.models.PeriodType + :param period_value: Required. the number of intervals a period contains, when no period set to + 0. + :type period_value: int + """ + + _validation = { + 'period_type': {'required': True}, + 'period_value': {'required': True}, + } + + _attribute_map = { + 'period_type': {'key': 'periodType', 'type': 'str'}, + 'period_value': {'key': 'periodValue', 'type': 'int'}, + } + + def __init__( + self, + **kwargs + ): + super(PeriodFeedbackValue, self).__init__(**kwargs) + self.period_type = kwargs['period_type'] + self.period_value = kwargs['period_value'] + + +class PostgreSqlDataFeed(DataFeedDetail): + """PostgreSqlDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(PostgreSqlDataFeed, self).__init__(**kwargs) + self.data_source_type = 'PostgreSql' # type: str + self.data_source_parameter = kwargs['data_source_parameter'] + + +class PostgreSqlDataFeedPatch(DataFeedDetailPatch): + """PostgreSqlDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(PostgreSqlDataFeedPatch, self).__init__(**kwargs) + self.data_source_type = 'PostgreSql' # type: str + self.data_source_parameter = kwargs.get('data_source_parameter', None) + + +class RootCause(msrest.serialization.Model): + """RootCause. + + All required parameters must be populated in order to send to Azure. + + :param root_cause: Required. + :type root_cause: ~azure.ai.metricsadvisor.models.DimensionGroupIdentity + :param path: Required. drilling down path from query anomaly to root cause. + :type path: list[str] + :param score: Required. score. + :type score: float + :param description: Required. description. + :type description: str + """ + + _validation = { + 'root_cause': {'required': True}, + 'path': {'required': True}, + 'score': {'required': True}, + 'description': {'required': True}, + } + + _attribute_map = { + 'root_cause': {'key': 'rootCause', 'type': 'DimensionGroupIdentity'}, + 'path': {'key': 'path', 'type': '[str]'}, + 'score': {'key': 'score', 'type': 'float'}, + 'description': {'key': 'description', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(RootCause, self).__init__(**kwargs) + self.root_cause = kwargs['root_cause'] + self.path = kwargs['path'] + self.score = kwargs['score'] + self.description = kwargs['description'] + + +class RootCauseList(msrest.serialization.Model): + """RootCauseList. + + All required parameters must be populated in order to send to Azure. + + :param value: Required. + :type value: list[~azure.ai.metricsadvisor.models.RootCause] + """ + + _validation = { + 'value': {'required': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[RootCause]'}, + } + + def __init__( + self, + **kwargs + ): + super(RootCauseList, self).__init__(**kwargs) + self.value = kwargs['value'] + + +class SeriesConfiguration(msrest.serialization.Model): + """SeriesConfiguration. + + All required parameters must be populated in order to send to Azure. + + :param series: Required. + :type series: ~azure.ai.metricsadvisor.models.SeriesIdentity + :param condition_operator: condition operator + + should be specified when combining multiple detection conditions. Possible values include: + "AND", "OR". + :type condition_operator: str or + ~azure.ai.metricsadvisor.models.SeriesConfigurationConditionOperator + :param smart_detection_condition: + :type smart_detection_condition: ~azure.ai.metricsadvisor.models.SmartDetectionCondition + :param hard_threshold_condition: + :type hard_threshold_condition: ~azure.ai.metricsadvisor.models.HardThresholdCondition + :param change_threshold_condition: + :type change_threshold_condition: ~azure.ai.metricsadvisor.models.ChangeThresholdCondition + """ + + _validation = { + 'series': {'required': True}, + } + + _attribute_map = { + 'series': {'key': 'series', 'type': 'SeriesIdentity'}, + 'condition_operator': {'key': 'conditionOperator', 'type': 'str'}, + 'smart_detection_condition': {'key': 'smartDetectionCondition', 'type': 'SmartDetectionCondition'}, + 'hard_threshold_condition': {'key': 'hardThresholdCondition', 'type': 'HardThresholdCondition'}, + 'change_threshold_condition': {'key': 'changeThresholdCondition', 'type': 'ChangeThresholdCondition'}, + } + + def __init__( + self, + **kwargs + ): + super(SeriesConfiguration, self).__init__(**kwargs) + self.series = kwargs['series'] + self.condition_operator = kwargs.get('condition_operator', None) + self.smart_detection_condition = kwargs.get('smart_detection_condition', None) + self.hard_threshold_condition = kwargs.get('hard_threshold_condition', None) + self.change_threshold_condition = kwargs.get('change_threshold_condition', None) + + +class SeriesIdentity(msrest.serialization.Model): + """SeriesIdentity. + + All required parameters must be populated in order to send to Azure. + + :param dimension: Required. dimension specified for series. + :type dimension: dict[str, str] + """ + + _validation = { + 'dimension': {'required': True}, + } + + _attribute_map = { + 'dimension': {'key': 'dimension', 'type': '{str}'}, + } + + def __init__( + self, + **kwargs + ): + super(SeriesIdentity, self).__init__(**kwargs) + self.dimension = kwargs['dimension'] + + +class SeriesResult(msrest.serialization.Model): + """SeriesResult. + + All required parameters must be populated in order to send to Azure. + + :param series: Required. + :type series: ~azure.ai.metricsadvisor.models.SeriesIdentity + :param timestamp_list: Required. timestamps of the series. + :type timestamp_list: list[~datetime.datetime] + :param value_list: Required. values of the series. + :type value_list: list[float] + :param is_anomaly_list: Required. whether points of the series are anomalies. + :type is_anomaly_list: list[bool] + :param period_list: Required. period calculated on each point of the series. + :type period_list: list[int] + :param expected_value_list: Required. expected values of the series given by smart detector. + :type expected_value_list: list[float] + :param lower_boundary_list: Required. lower boundary list of the series given by smart + detector. + :type lower_boundary_list: list[float] + :param upper_boundary_list: Required. upper boundary list of the series given by smart + detector. + :type upper_boundary_list: list[float] + """ + + _validation = { + 'series': {'required': True}, + 'timestamp_list': {'required': True}, + 'value_list': {'required': True}, + 'is_anomaly_list': {'required': True}, + 'period_list': {'required': True}, + 'expected_value_list': {'required': True}, + 'lower_boundary_list': {'required': True}, + 'upper_boundary_list': {'required': True}, + } + + _attribute_map = { + 'series': {'key': 'series', 'type': 'SeriesIdentity'}, + 'timestamp_list': {'key': 'timestampList', 'type': '[iso-8601]'}, + 'value_list': {'key': 'valueList', 'type': '[float]'}, + 'is_anomaly_list': {'key': 'isAnomalyList', 'type': '[bool]'}, + 'period_list': {'key': 'periodList', 'type': '[int]'}, + 'expected_value_list': {'key': 'expectedValueList', 'type': '[float]'}, + 'lower_boundary_list': {'key': 'lowerBoundaryList', 'type': '[float]'}, + 'upper_boundary_list': {'key': 'upperBoundaryList', 'type': '[float]'}, + } + + def __init__( + self, + **kwargs + ): + super(SeriesResult, self).__init__(**kwargs) + self.series = kwargs['series'] + self.timestamp_list = kwargs['timestamp_list'] + self.value_list = kwargs['value_list'] + self.is_anomaly_list = kwargs['is_anomaly_list'] + self.period_list = kwargs['period_list'] + self.expected_value_list = kwargs['expected_value_list'] + self.lower_boundary_list = kwargs['lower_boundary_list'] + self.upper_boundary_list = kwargs['upper_boundary_list'] + + +class SeriesResultList(msrest.serialization.Model): + """SeriesResultList. + + All required parameters must be populated in order to send to Azure. + + :param value: Required. + :type value: list[~azure.ai.metricsadvisor.models.SeriesResult] + """ + + _validation = { + 'value': {'required': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[SeriesResult]'}, + } + + def __init__( + self, + **kwargs + ): + super(SeriesResultList, self).__init__(**kwargs) + self.value = kwargs['value'] + + +class SeverityCondition(msrest.serialization.Model): + """SeverityCondition. + + All required parameters must be populated in order to send to Azure. + + :param min_alert_severity: Required. min alert severity. Possible values include: "Low", + "Medium", "High". + :type min_alert_severity: str or ~azure.ai.metricsadvisor.models.Severity + :param max_alert_severity: Required. max alert severity. Possible values include: "Low", + "Medium", "High". + :type max_alert_severity: str or ~azure.ai.metricsadvisor.models.Severity + """ + + _validation = { + 'min_alert_severity': {'required': True}, + 'max_alert_severity': {'required': True}, + } + + _attribute_map = { + 'min_alert_severity': {'key': 'minAlertSeverity', 'type': 'str'}, + 'max_alert_severity': {'key': 'maxAlertSeverity', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(SeverityCondition, self).__init__(**kwargs) + self.min_alert_severity = kwargs['min_alert_severity'] + self.max_alert_severity = kwargs['max_alert_severity'] + + +class SeverityFilterCondition(msrest.serialization.Model): + """SeverityFilterCondition. + + All required parameters must be populated in order to send to Azure. + + :param min: Required. min severity. Possible values include: "Low", "Medium", "High". + :type min: str or ~azure.ai.metricsadvisor.models.Severity + :param max: Required. max severity. Possible values include: "Low", "Medium", "High". + :type max: str or ~azure.ai.metricsadvisor.models.Severity + """ + + _validation = { + 'min': {'required': True}, + 'max': {'required': True}, + } + + _attribute_map = { + 'min': {'key': 'min', 'type': 'str'}, + 'max': {'key': 'max', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(SeverityFilterCondition, self).__init__(**kwargs) + self.min = kwargs['min'] + self.max = kwargs['max'] + + +class SmartDetectionCondition(msrest.serialization.Model): + """SmartDetectionCondition. + + All required parameters must be populated in order to send to Azure. + + :param sensitivity: Required. sensitivity, value range : (0, 100]. + :type sensitivity: float + :param anomaly_detector_direction: Required. detection direction. Possible values include: + "Both", "Down", "Up". + :type anomaly_detector_direction: str or + ~azure.ai.metricsadvisor.models.AnomalyDetectorDirection + :param suppress_condition: Required. + :type suppress_condition: ~azure.ai.metricsadvisor.models.SuppressCondition + """ + + _validation = { + 'sensitivity': {'required': True}, + 'anomaly_detector_direction': {'required': True}, + 'suppress_condition': {'required': True}, + } + + _attribute_map = { + 'sensitivity': {'key': 'sensitivity', 'type': 'float'}, + 'anomaly_detector_direction': {'key': 'anomalyDetectorDirection', 'type': 'str'}, + 'suppress_condition': {'key': 'suppressCondition', 'type': 'SuppressCondition'}, + } + + def __init__( + self, + **kwargs + ): + super(SmartDetectionCondition, self).__init__(**kwargs) + self.sensitivity = kwargs['sensitivity'] + self.anomaly_detector_direction = kwargs['anomaly_detector_direction'] + self.suppress_condition = kwargs['suppress_condition'] + + +class SQLServerDataFeed(DataFeedDetail): + """SQLServerDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(SQLServerDataFeed, self).__init__(**kwargs) + self.data_source_type = 'SqlServer' # type: str + self.data_source_parameter = kwargs['data_source_parameter'] + + +class SQLServerDataFeedPatch(DataFeedDetailPatch): + """SQLServerDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(SQLServerDataFeedPatch, self).__init__(**kwargs) + self.data_source_type = 'SqlServer' # type: str + self.data_source_parameter = kwargs.get('data_source_parameter', None) + + +class SqlSourceParameter(msrest.serialization.Model): + """SqlSourceParameter. + + All required parameters must be populated in order to send to Azure. + + :param connection_string: Required. Database connection string. + :type connection_string: str + :param query: Required. Query script. + :type query: str + """ + + _validation = { + 'connection_string': {'required': True}, + 'query': {'required': True}, + } + + _attribute_map = { + 'connection_string': {'key': 'connectionString', 'type': 'str'}, + 'query': {'key': 'query', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(SqlSourceParameter, self).__init__(**kwargs) + self.connection_string = kwargs['connection_string'] + self.query = kwargs['query'] + + +class SuppressCondition(msrest.serialization.Model): + """SuppressCondition. + + All required parameters must be populated in order to send to Azure. + + :param min_number: Required. min point number, value range : [1, +∞). + :type min_number: int + :param min_ratio: Required. min point ratio, value range : (0, 100]. + :type min_ratio: float + """ + + _validation = { + 'min_number': {'required': True}, + 'min_ratio': {'required': True}, + } + + _attribute_map = { + 'min_number': {'key': 'minNumber', 'type': 'int'}, + 'min_ratio': {'key': 'minRatio', 'type': 'float'}, + } + + def __init__( + self, + **kwargs + ): + super(SuppressCondition, self).__init__(**kwargs) + self.min_number = kwargs['min_number'] + self.min_ratio = kwargs['min_ratio'] + + +class TopNGroupScope(msrest.serialization.Model): + """TopNGroupScope. + + All required parameters must be populated in order to send to Azure. + + :param top: Required. top N, value range : [1, +∞). + :type top: int + :param period: Required. point count used to look back, value range : [1, +∞). + :type period: int + :param min_top_count: Required. min count should be in top N, value range : [1, +∞) + + should be less than or equal to period. + :type min_top_count: int + """ + + _validation = { + 'top': {'required': True}, + 'period': {'required': True}, + 'min_top_count': {'required': True}, + } + + _attribute_map = { + 'top': {'key': 'top', 'type': 'int'}, + 'period': {'key': 'period', 'type': 'int'}, + 'min_top_count': {'key': 'minTopCount', 'type': 'int'}, + } + + def __init__( + self, + **kwargs + ): + super(TopNGroupScope, self).__init__(**kwargs) + self.top = kwargs['top'] + self.period = kwargs['period'] + self.min_top_count = kwargs['min_top_count'] + + +class UsageStats(msrest.serialization.Model): + """UsageStats. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar timestamp: The timestamp of the stats. + :vartype timestamp: ~datetime.datetime + :ivar active_series_count: The active series count. + :vartype active_series_count: int + :ivar all_series_count: All series count under non deleted data feed. + :vartype all_series_count: int + :ivar metrics_count: The metrics count under non deleted data feed. + :vartype metrics_count: int + :ivar datafeed_count: The count of non deleted data feed. + :vartype datafeed_count: int + """ + + _validation = { + 'timestamp': {'readonly': True}, + 'active_series_count': {'readonly': True}, + 'all_series_count': {'readonly': True}, + 'metrics_count': {'readonly': True}, + 'datafeed_count': {'readonly': True}, + } + + _attribute_map = { + 'timestamp': {'key': 'timestamp', 'type': 'iso-8601'}, + 'active_series_count': {'key': 'activeSeriesCount', 'type': 'int'}, + 'all_series_count': {'key': 'allSeriesCount', 'type': 'int'}, + 'metrics_count': {'key': 'metricsCount', 'type': 'int'}, + 'datafeed_count': {'key': 'datafeedCount', 'type': 'int'}, + } + + def __init__( + self, + **kwargs + ): + super(UsageStats, self).__init__(**kwargs) + self.timestamp = None + self.active_series_count = None + self.all_series_count = None + self.metrics_count = None + self.datafeed_count = None + + +class ValueCondition(msrest.serialization.Model): + """ValueCondition. + + All required parameters must be populated in order to send to Azure. + + :param lower: lower bound + + should be specified when direction is Both or Down. + :type lower: float + :param upper: upper bound + + should be specified when direction is Both or Up. + :type upper: float + :param direction: Required. value filter direction. Possible values include: "Both", "Down", + "Up". + :type direction: str or ~azure.ai.metricsadvisor.models.Direction + :param metric_id: the other metric unique id used for value filter. + :type metric_id: str + :param trigger_for_missing: trigger alert when the corresponding point is missing in the other + metric + + should be specified only when using other metric to filter. + :type trigger_for_missing: bool + """ + + _validation = { + 'direction': {'required': True}, + } + + _attribute_map = { + 'lower': {'key': 'lower', 'type': 'float'}, + 'upper': {'key': 'upper', 'type': 'float'}, + 'direction': {'key': 'direction', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'trigger_for_missing': {'key': 'triggerForMissing', 'type': 'bool'}, + } + + def __init__( + self, + **kwargs + ): + super(ValueCondition, self).__init__(**kwargs) + self.lower = kwargs.get('lower', None) + self.upper = kwargs.get('upper', None) + self.direction = kwargs['direction'] + self.metric_id = kwargs.get('metric_id', None) + self.trigger_for_missing = kwargs.get('trigger_for_missing', None) + + +class WebhookHookInfo(HookInfo): + """WebhookHookInfo. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param hook_type: Required. hook type.Constant filled by server. Possible values include: + "Webhook", "Email". + :type hook_type: str or ~azure.ai.metricsadvisor.models.HookType + :ivar hook_id: Hook unique id. + :vartype hook_id: str + :param hook_name: Required. hook unique name. + :type hook_name: str + :param description: hook description. + :type description: str + :param external_link: hook external link. + :type external_link: str + :ivar admins: hook administrators. + :vartype admins: list[str] + :param hook_parameter: Required. + :type hook_parameter: ~azure.ai.metricsadvisor.models.WebhookHookParameter + """ + + _validation = { + 'hook_type': {'required': True}, + 'hook_id': {'readonly': True}, + 'hook_name': {'required': True}, + 'admins': {'readonly': True, 'unique': True}, + 'hook_parameter': {'required': True}, + } + + _attribute_map = { + 'hook_type': {'key': 'hookType', 'type': 'str'}, + 'hook_id': {'key': 'hookId', 'type': 'str'}, + 'hook_name': {'key': 'hookName', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'external_link': {'key': 'externalLink', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'hook_parameter': {'key': 'hookParameter', 'type': 'WebhookHookParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(WebhookHookInfo, self).__init__(**kwargs) + self.hook_type = 'Webhook' # type: str + self.hook_parameter = kwargs['hook_parameter'] + + +class WebhookHookInfoPatch(HookInfoPatch): + """WebhookHookInfoPatch. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param hook_type: Required. hook type.Constant filled by server. Possible values include: + "Webhook", "Email". + :type hook_type: str or ~azure.ai.metricsadvisor.models.HookInfoPatchHookType + :param hook_name: hook unique name. + :type hook_name: str + :param description: hook description. + :type description: str + :param external_link: hook external link. + :type external_link: str + :ivar admins: hook administrators. + :vartype admins: list[str] + :param hook_parameter: + :type hook_parameter: ~azure.ai.metricsadvisor.models.WebhookHookParameter + """ + + _validation = { + 'hook_type': {'required': True}, + 'admins': {'readonly': True, 'unique': True}, + } + + _attribute_map = { + 'hook_type': {'key': 'hookType', 'type': 'str'}, + 'hook_name': {'key': 'hookName', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'external_link': {'key': 'externalLink', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'hook_parameter': {'key': 'hookParameter', 'type': 'WebhookHookParameter'}, + } + + def __init__( + self, + **kwargs + ): + super(WebhookHookInfoPatch, self).__init__(**kwargs) + self.hook_type = 'Webhook' # type: str + self.hook_parameter = kwargs.get('hook_parameter', None) + + +class WebhookHookParameter(msrest.serialization.Model): + """WebhookHookParameter. + + All required parameters must be populated in order to send to Azure. + + :param endpoint: Required. API address, will be called when alert is triggered, only support + POST method via SSL. + :type endpoint: str + :param username: basic authentication. + :type username: str + :param password: basic authentication. + :type password: str + :param headers: custom headers in api call. + :type headers: dict[str, str] + :param certificate_key: client certificate. + :type certificate_key: str + :param certificate_password: client certificate password. + :type certificate_password: str + """ + + _validation = { + 'endpoint': {'required': True}, + } + + _attribute_map = { + 'endpoint': {'key': 'endpoint', 'type': 'str'}, + 'username': {'key': 'username', 'type': 'str'}, + 'password': {'key': 'password', 'type': 'str'}, + 'headers': {'key': 'headers', 'type': '{str}'}, + 'certificate_key': {'key': 'certificateKey', 'type': 'str'}, + 'certificate_password': {'key': 'certificatePassword', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(WebhookHookParameter, self).__init__(**kwargs) + self.endpoint = kwargs['endpoint'] + self.username = kwargs.get('username', None) + self.password = kwargs.get('password', None) + self.headers = kwargs.get('headers', None) + self.certificate_key = kwargs.get('certificate_key', None) + self.certificate_password = kwargs.get('certificate_password', None) + + +class WholeMetricConfiguration(msrest.serialization.Model): + """WholeMetricConfiguration. + + :param condition_operator: condition operator + + should be specified when combining multiple detection conditions. Possible values include: + "AND", "OR". + :type condition_operator: str or + ~azure.ai.metricsadvisor.models.WholeMetricConfigurationConditionOperator + :param smart_detection_condition: + :type smart_detection_condition: ~azure.ai.metricsadvisor.models.SmartDetectionCondition + :param hard_threshold_condition: + :type hard_threshold_condition: ~azure.ai.metricsadvisor.models.HardThresholdCondition + :param change_threshold_condition: + :type change_threshold_condition: ~azure.ai.metricsadvisor.models.ChangeThresholdCondition + """ + + _attribute_map = { + 'condition_operator': {'key': 'conditionOperator', 'type': 'str'}, + 'smart_detection_condition': {'key': 'smartDetectionCondition', 'type': 'SmartDetectionCondition'}, + 'hard_threshold_condition': {'key': 'hardThresholdCondition', 'type': 'HardThresholdCondition'}, + 'change_threshold_condition': {'key': 'changeThresholdCondition', 'type': 'ChangeThresholdCondition'}, + } + + def __init__( + self, + **kwargs + ): + super(WholeMetricConfiguration, self).__init__(**kwargs) + self.condition_operator = kwargs.get('condition_operator', None) + self.smart_detection_condition = kwargs.get('smart_detection_condition', None) + self.hard_threshold_condition = kwargs.get('hard_threshold_condition', None) + self.change_threshold_condition = kwargs.get('change_threshold_condition', None) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/models/_models_py3.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/models/_models_py3.py new file mode 100644 index 000000000000..b73841d97b2d --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/models/_models_py3.py @@ -0,0 +1,7943 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +import datetime +from typing import Dict, List, Optional, Union + +from azure.core.exceptions import HttpResponseError +import msrest.serialization + +from ._azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2_enums import * + + +class AlertingResultQuery(msrest.serialization.Model): + """AlertingResultQuery. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. start time. + :type start_time: ~datetime.datetime + :param end_time: Required. end time. + :type end_time: ~datetime.datetime + :param time_mode: Required. time mode. Possible values include: "AnomalyTime", "CreatedTime", + "ModifiedTime". + :type time_mode: str or ~azure.ai.metricsadvisor.models.TimeMode + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + 'time_mode': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'time_mode': {'key': 'timeMode', 'type': 'str'}, + } + + def __init__( + self, + *, + start_time: datetime.datetime, + end_time: datetime.datetime, + time_mode: Union[str, "TimeMode"], + **kwargs + ): + super(AlertingResultQuery, self).__init__(**kwargs) + self.start_time = start_time + self.end_time = end_time + self.time_mode = time_mode + + +class AlertResult(msrest.serialization.Model): + """AlertResult. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar alert_id: alert id. + :vartype alert_id: str + :ivar timestamp: anomaly time. + :vartype timestamp: ~datetime.datetime + :ivar created_time: created time. + :vartype created_time: ~datetime.datetime + :ivar modified_time: modified time. + :vartype modified_time: ~datetime.datetime + """ + + _validation = { + 'alert_id': {'readonly': True}, + 'timestamp': {'readonly': True}, + 'created_time': {'readonly': True}, + 'modified_time': {'readonly': True}, + } + + _attribute_map = { + 'alert_id': {'key': 'alertId', 'type': 'str'}, + 'timestamp': {'key': 'timestamp', 'type': 'iso-8601'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'modified_time': {'key': 'modifiedTime', 'type': 'iso-8601'}, + } + + def __init__( + self, + **kwargs + ): + super(AlertResult, self).__init__(**kwargs) + self.alert_id = None + self.timestamp = None + self.created_time = None + self.modified_time = None + + +class AlertResultList(msrest.serialization.Model): + """AlertResultList. + + All required parameters must be populated in order to send to Azure. + + :param next_link: Required. + :type next_link: str + :param value: Required. + :type value: list[~azure.ai.metricsadvisor.models.AlertResult] + """ + + _validation = { + 'next_link': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[AlertResult]'}, + } + + def __init__( + self, + *, + next_link: str, + value: List["AlertResult"], + **kwargs + ): + super(AlertResultList, self).__init__(**kwargs) + self.next_link = next_link + self.value = value + + +class AlertSnoozeCondition(msrest.serialization.Model): + """AlertSnoozeCondition. + + All required parameters must be populated in order to send to Azure. + + :param auto_snooze: Required. snooze point count, value range : [0, +∞). + :type auto_snooze: int + :param snooze_scope: Required. snooze scope. Possible values include: "Metric", "Series". + :type snooze_scope: str or ~azure.ai.metricsadvisor.models.SnoozeScope + :param only_for_successive: Required. only snooze for successive anomalies. + :type only_for_successive: bool + """ + + _validation = { + 'auto_snooze': {'required': True}, + 'snooze_scope': {'required': True}, + 'only_for_successive': {'required': True}, + } + + _attribute_map = { + 'auto_snooze': {'key': 'autoSnooze', 'type': 'int'}, + 'snooze_scope': {'key': 'snoozeScope', 'type': 'str'}, + 'only_for_successive': {'key': 'onlyForSuccessive', 'type': 'bool'}, + } + + def __init__( + self, + *, + auto_snooze: int, + snooze_scope: Union[str, "SnoozeScope"], + only_for_successive: bool, + **kwargs + ): + super(AlertSnoozeCondition, self).__init__(**kwargs) + self.auto_snooze = auto_snooze + self.snooze_scope = snooze_scope + self.only_for_successive = only_for_successive + + +class AnomalyAlertingConfiguration(msrest.serialization.Model): + """AnomalyAlertingConfiguration. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar anomaly_alerting_configuration_id: anomaly alerting configuration unique id. + :vartype anomaly_alerting_configuration_id: str + :param name: Required. anomaly alerting configuration name. + :type name: str + :param description: anomaly alerting configuration description. + :type description: str + :param cross_metrics_operator: cross metrics operator + + should be specified when setting up multiple metric alerting configurations. Possible values + include: "AND", "OR", "XOR". + :type cross_metrics_operator: str or + ~azure.ai.metricsadvisor.models.AnomalyAlertingConfigurationCrossMetricsOperator + :param hook_ids: Required. hook unique ids. + :type hook_ids: list[str] + :param metric_alerting_configurations: Required. Anomaly alerting configurations. + :type metric_alerting_configurations: + list[~azure.ai.metricsadvisor.models.MetricAlertingConfiguration] + """ + + _validation = { + 'anomaly_alerting_configuration_id': {'readonly': True}, + 'name': {'required': True}, + 'hook_ids': {'required': True, 'unique': True}, + 'metric_alerting_configurations': {'required': True, 'unique': True}, + } + + _attribute_map = { + 'anomaly_alerting_configuration_id': {'key': 'anomalyAlertingConfigurationId', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'cross_metrics_operator': {'key': 'crossMetricsOperator', 'type': 'str'}, + 'hook_ids': {'key': 'hookIds', 'type': '[str]'}, + 'metric_alerting_configurations': {'key': 'metricAlertingConfigurations', 'type': '[MetricAlertingConfiguration]'}, + } + + def __init__( + self, + *, + name: str, + hook_ids: List[str], + metric_alerting_configurations: List["MetricAlertingConfiguration"], + description: Optional[str] = None, + cross_metrics_operator: Optional[Union[str, "AnomalyAlertingConfigurationCrossMetricsOperator"]] = None, + **kwargs + ): + super(AnomalyAlertingConfiguration, self).__init__(**kwargs) + self.anomaly_alerting_configuration_id = None + self.name = name + self.description = description + self.cross_metrics_operator = cross_metrics_operator + self.hook_ids = hook_ids + self.metric_alerting_configurations = metric_alerting_configurations + + +class AnomalyAlertingConfigurationList(msrest.serialization.Model): + """AnomalyAlertingConfigurationList. + + All required parameters must be populated in order to send to Azure. + + :param value: Required. + :type value: list[~azure.ai.metricsadvisor.models.AnomalyAlertingConfiguration] + """ + + _validation = { + 'value': {'required': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[AnomalyAlertingConfiguration]'}, + } + + def __init__( + self, + *, + value: List["AnomalyAlertingConfiguration"], + **kwargs + ): + super(AnomalyAlertingConfigurationList, self).__init__(**kwargs) + self.value = value + + +class AnomalyAlertingConfigurationPatch(msrest.serialization.Model): + """AnomalyAlertingConfigurationPatch. + + :param name: Anomaly alerting configuration name. + :type name: str + :param description: anomaly alerting configuration description. + :type description: str + :param cross_metrics_operator: cross metrics operator. Possible values include: "AND", "OR", + "XOR". + :type cross_metrics_operator: str or + ~azure.ai.metricsadvisor.models.AnomalyAlertingConfigurationPatchCrossMetricsOperator + :param hook_ids: hook unique ids. + :type hook_ids: list[str] + :param metric_alerting_configurations: Anomaly alerting configurations. + :type metric_alerting_configurations: + list[~azure.ai.metricsadvisor.models.MetricAlertingConfiguration] + """ + + _validation = { + 'hook_ids': {'unique': True}, + 'metric_alerting_configurations': {'unique': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'cross_metrics_operator': {'key': 'crossMetricsOperator', 'type': 'str'}, + 'hook_ids': {'key': 'hookIds', 'type': '[str]'}, + 'metric_alerting_configurations': {'key': 'metricAlertingConfigurations', 'type': '[MetricAlertingConfiguration]'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + description: Optional[str] = None, + cross_metrics_operator: Optional[Union[str, "AnomalyAlertingConfigurationPatchCrossMetricsOperator"]] = None, + hook_ids: Optional[List[str]] = None, + metric_alerting_configurations: Optional[List["MetricAlertingConfiguration"]] = None, + **kwargs + ): + super(AnomalyAlertingConfigurationPatch, self).__init__(**kwargs) + self.name = name + self.description = description + self.cross_metrics_operator = cross_metrics_operator + self.hook_ids = hook_ids + self.metric_alerting_configurations = metric_alerting_configurations + + +class AnomalyDetectionConfiguration(msrest.serialization.Model): + """AnomalyDetectionConfiguration. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar anomaly_detection_configuration_id: anomaly detection configuration unique id. + :vartype anomaly_detection_configuration_id: str + :param name: Required. anomaly detection configuration name. + :type name: str + :param description: anomaly detection configuration description. + :type description: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param whole_metric_configuration: Required. + :type whole_metric_configuration: ~azure.ai.metricsadvisor.models.WholeMetricConfiguration + :param dimension_group_override_configurations: detection configuration for series group. + :type dimension_group_override_configurations: + list[~azure.ai.metricsadvisor.models.DimensionGroupConfiguration] + :param series_override_configurations: detection configuration for specific series. + :type series_override_configurations: list[~azure.ai.metricsadvisor.models.SeriesConfiguration] + """ + + _validation = { + 'anomaly_detection_configuration_id': {'readonly': True}, + 'name': {'required': True}, + 'metric_id': {'required': True}, + 'whole_metric_configuration': {'required': True}, + 'dimension_group_override_configurations': {'unique': True}, + 'series_override_configurations': {'unique': True}, + } + + _attribute_map = { + 'anomaly_detection_configuration_id': {'key': 'anomalyDetectionConfigurationId', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'whole_metric_configuration': {'key': 'wholeMetricConfiguration', 'type': 'WholeMetricConfiguration'}, + 'dimension_group_override_configurations': {'key': 'dimensionGroupOverrideConfigurations', 'type': '[DimensionGroupConfiguration]'}, + 'series_override_configurations': {'key': 'seriesOverrideConfigurations', 'type': '[SeriesConfiguration]'}, + } + + def __init__( + self, + *, + name: str, + metric_id: str, + whole_metric_configuration: "WholeMetricConfiguration", + description: Optional[str] = None, + dimension_group_override_configurations: Optional[List["DimensionGroupConfiguration"]] = None, + series_override_configurations: Optional[List["SeriesConfiguration"]] = None, + **kwargs + ): + super(AnomalyDetectionConfiguration, self).__init__(**kwargs) + self.anomaly_detection_configuration_id = None + self.name = name + self.description = description + self.metric_id = metric_id + self.whole_metric_configuration = whole_metric_configuration + self.dimension_group_override_configurations = dimension_group_override_configurations + self.series_override_configurations = series_override_configurations + + +class AnomalyDetectionConfigurationList(msrest.serialization.Model): + """AnomalyDetectionConfigurationList. + + All required parameters must be populated in order to send to Azure. + + :param value: Required. + :type value: list[~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration] + """ + + _validation = { + 'value': {'required': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[AnomalyDetectionConfiguration]'}, + } + + def __init__( + self, + *, + value: List["AnomalyDetectionConfiguration"], + **kwargs + ): + super(AnomalyDetectionConfigurationList, self).__init__(**kwargs) + self.value = value + + +class AnomalyDetectionConfigurationPatch(msrest.serialization.Model): + """AnomalyDetectionConfigurationPatch. + + :param name: anomaly detection configuration name. + :type name: str + :param description: anomaly detection configuration description. + :type description: str + :param whole_metric_configuration: + :type whole_metric_configuration: ~azure.ai.metricsadvisor.models.WholeMetricConfiguration + :param dimension_group_override_configurations: detection configuration for series group. + :type dimension_group_override_configurations: + list[~azure.ai.metricsadvisor.models.DimensionGroupConfiguration] + :param series_override_configurations: detection configuration for specific series. + :type series_override_configurations: list[~azure.ai.metricsadvisor.models.SeriesConfiguration] + """ + + _validation = { + 'dimension_group_override_configurations': {'unique': True}, + 'series_override_configurations': {'unique': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'whole_metric_configuration': {'key': 'wholeMetricConfiguration', 'type': 'WholeMetricConfiguration'}, + 'dimension_group_override_configurations': {'key': 'dimensionGroupOverrideConfigurations', 'type': '[DimensionGroupConfiguration]'}, + 'series_override_configurations': {'key': 'seriesOverrideConfigurations', 'type': '[SeriesConfiguration]'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + description: Optional[str] = None, + whole_metric_configuration: Optional["WholeMetricConfiguration"] = None, + dimension_group_override_configurations: Optional[List["DimensionGroupConfiguration"]] = None, + series_override_configurations: Optional[List["SeriesConfiguration"]] = None, + **kwargs + ): + super(AnomalyDetectionConfigurationPatch, self).__init__(**kwargs) + self.name = name + self.description = description + self.whole_metric_configuration = whole_metric_configuration + self.dimension_group_override_configurations = dimension_group_override_configurations + self.series_override_configurations = series_override_configurations + + +class AnomalyDimensionList(msrest.serialization.Model): + """AnomalyDimensionList. + + All required parameters must be populated in order to send to Azure. + + :param next_link: Required. + :type next_link: str + :param value: Required. + :type value: list[str] + """ + + _validation = { + 'next_link': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[str]'}, + } + + def __init__( + self, + *, + next_link: str, + value: List[str], + **kwargs + ): + super(AnomalyDimensionList, self).__init__(**kwargs) + self.next_link = next_link + self.value = value + + +class AnomalyDimensionQuery(msrest.serialization.Model): + """AnomalyDimensionQuery. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. start time. + :type start_time: ~datetime.datetime + :param end_time: Required. end time. + :type end_time: ~datetime.datetime + :param dimension_name: Required. dimension to query. + :type dimension_name: str + :param dimension_filter: + :type dimension_filter: ~azure.ai.metricsadvisor.models.DimensionGroupIdentity + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + 'dimension_name': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'dimension_name': {'key': 'dimensionName', 'type': 'str'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': 'DimensionGroupIdentity'}, + } + + def __init__( + self, + *, + start_time: datetime.datetime, + end_time: datetime.datetime, + dimension_name: str, + dimension_filter: Optional["DimensionGroupIdentity"] = None, + **kwargs + ): + super(AnomalyDimensionQuery, self).__init__(**kwargs) + self.start_time = start_time + self.end_time = end_time + self.dimension_name = dimension_name + self.dimension_filter = dimension_filter + + +class MetricFeedback(msrest.serialization.Model): + """MetricFeedback. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param feedback_type: Required. feedback type.Constant filled by server. Possible values + include: "Anomaly", "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :ivar feedback_id: feedback unique id. + :vartype feedback_id: str + :ivar created_time: feedback created time. + :vartype created_time: ~datetime.datetime + :ivar user_principal: user who gives this feedback. + :vartype user_principal: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param dimension_filter: Required. + :type dimension_filter: ~azure.ai.metricsadvisor.models.FeedbackDimensionFilter + """ + + _validation = { + 'feedback_type': {'required': True}, + 'feedback_id': {'readonly': True}, + 'created_time': {'readonly': True}, + 'user_principal': {'readonly': True}, + 'metric_id': {'required': True}, + 'dimension_filter': {'required': True}, + } + + _attribute_map = { + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'feedback_id': {'key': 'feedbackId', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'user_principal': {'key': 'userPrincipal', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': 'FeedbackDimensionFilter'}, + } + + _subtype_map = { + 'feedback_type': {'Anomaly': 'AnomalyFeedback', 'ChangePoint': 'ChangePointFeedback', 'Comment': 'CommentFeedback', 'Period': 'PeriodFeedback'} + } + + def __init__( + self, + *, + metric_id: str, + dimension_filter: "FeedbackDimensionFilter", + **kwargs + ): + super(MetricFeedback, self).__init__(**kwargs) + self.feedback_type = None # type: Optional[str] + self.feedback_id = None + self.created_time = None + self.user_principal = None + self.metric_id = metric_id + self.dimension_filter = dimension_filter + + +class AnomalyFeedback(MetricFeedback): + """AnomalyFeedback. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param feedback_type: Required. feedback type.Constant filled by server. Possible values + include: "Anomaly", "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :ivar feedback_id: feedback unique id. + :vartype feedback_id: str + :ivar created_time: feedback created time. + :vartype created_time: ~datetime.datetime + :ivar user_principal: user who gives this feedback. + :vartype user_principal: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param dimension_filter: Required. + :type dimension_filter: ~azure.ai.metricsadvisor.models.FeedbackDimensionFilter + :param start_time: Required. the start timestamp of feedback timerange. + :type start_time: ~datetime.datetime + :param end_time: Required. the end timestamp of feedback timerange, when equals to startTime + means only one timestamp. + :type end_time: ~datetime.datetime + :param value: Required. + :type value: ~azure.ai.metricsadvisor.models.AnomalyFeedbackValue + :param anomaly_detection_configuration_id: the corresponding anomaly detection configuration of + this feedback. + :type anomaly_detection_configuration_id: str + :param anomaly_detection_configuration_snapshot: + :type anomaly_detection_configuration_snapshot: + ~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration + """ + + _validation = { + 'feedback_type': {'required': True}, + 'feedback_id': {'readonly': True}, + 'created_time': {'readonly': True}, + 'user_principal': {'readonly': True}, + 'metric_id': {'required': True}, + 'dimension_filter': {'required': True}, + 'start_time': {'required': True}, + 'end_time': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'feedback_id': {'key': 'feedbackId', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'user_principal': {'key': 'userPrincipal', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': 'FeedbackDimensionFilter'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'value': {'key': 'value', 'type': 'AnomalyFeedbackValue'}, + 'anomaly_detection_configuration_id': {'key': 'anomalyDetectionConfigurationId', 'type': 'str'}, + 'anomaly_detection_configuration_snapshot': {'key': 'anomalyDetectionConfigurationSnapshot', 'type': 'AnomalyDetectionConfiguration'}, + } + + def __init__( + self, + *, + metric_id: str, + dimension_filter: "FeedbackDimensionFilter", + start_time: datetime.datetime, + end_time: datetime.datetime, + value: "AnomalyFeedbackValue", + anomaly_detection_configuration_id: Optional[str] = None, + anomaly_detection_configuration_snapshot: Optional["AnomalyDetectionConfiguration"] = None, + **kwargs + ): + super(AnomalyFeedback, self).__init__(metric_id=metric_id, dimension_filter=dimension_filter, **kwargs) + self.feedback_type = 'Anomaly' # type: str + self.start_time = start_time + self.end_time = end_time + self.value = value + self.anomaly_detection_configuration_id = anomaly_detection_configuration_id + self.anomaly_detection_configuration_snapshot = anomaly_detection_configuration_snapshot + + +class AnomalyFeedbackValue(msrest.serialization.Model): + """AnomalyFeedbackValue. + + All required parameters must be populated in order to send to Azure. + + :param anomaly_value: Required. Possible values include: "AutoDetect", "Anomaly", + "NotAnomaly". + :type anomaly_value: str or ~azure.ai.metricsadvisor.models.AnomalyValue + """ + + _validation = { + 'anomaly_value': {'required': True}, + } + + _attribute_map = { + 'anomaly_value': {'key': 'anomalyValue', 'type': 'str'}, + } + + def __init__( + self, + *, + anomaly_value: Union[str, "AnomalyValue"], + **kwargs + ): + super(AnomalyFeedbackValue, self).__init__(**kwargs) + self.anomaly_value = anomaly_value + + +class AnomalyProperty(msrest.serialization.Model): + """AnomalyProperty. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param anomaly_severity: Required. anomaly severity. Possible values include: "Low", "Medium", + "High". + :type anomaly_severity: str or ~azure.ai.metricsadvisor.models.Severity + :ivar anomaly_status: anomaly status + + only return for alerting anomaly result. Possible values include: "Active", "Resolved". + :vartype anomaly_status: str or ~azure.ai.metricsadvisor.models.AnomalyPropertyAnomalyStatus + """ + + _validation = { + 'anomaly_severity': {'required': True}, + 'anomaly_status': {'readonly': True}, + } + + _attribute_map = { + 'anomaly_severity': {'key': 'anomalySeverity', 'type': 'str'}, + 'anomaly_status': {'key': 'anomalyStatus', 'type': 'str'}, + } + + def __init__( + self, + *, + anomaly_severity: Union[str, "Severity"], + **kwargs + ): + super(AnomalyProperty, self).__init__(**kwargs) + self.anomaly_severity = anomaly_severity + self.anomaly_status = None + + +class AnomalyResult(msrest.serialization.Model): + """AnomalyResult. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar metric_id: metric unique id + + only return for alerting anomaly result. + :vartype metric_id: str + :ivar anomaly_detection_configuration_id: anomaly detection configuration unique id + + only return for alerting anomaly result. + :vartype anomaly_detection_configuration_id: str + :param timestamp: Required. anomaly time. + :type timestamp: ~datetime.datetime + :ivar created_time: created time + + only return for alerting result. + :vartype created_time: ~datetime.datetime + :ivar modified_time: modified time + + only return for alerting result. + :vartype modified_time: ~datetime.datetime + :param dimension: Required. dimension specified for series. + :type dimension: dict[str, str] + :param property: Required. + :type property: ~azure.ai.metricsadvisor.models.AnomalyProperty + """ + + _validation = { + 'metric_id': {'readonly': True}, + 'anomaly_detection_configuration_id': {'readonly': True}, + 'timestamp': {'required': True}, + 'created_time': {'readonly': True}, + 'modified_time': {'readonly': True}, + 'dimension': {'required': True}, + 'property': {'required': True}, + } + + _attribute_map = { + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'anomaly_detection_configuration_id': {'key': 'anomalyDetectionConfigurationId', 'type': 'str'}, + 'timestamp': {'key': 'timestamp', 'type': 'iso-8601'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'modified_time': {'key': 'modifiedTime', 'type': 'iso-8601'}, + 'dimension': {'key': 'dimension', 'type': '{str}'}, + 'property': {'key': 'property', 'type': 'AnomalyProperty'}, + } + + def __init__( + self, + *, + timestamp: datetime.datetime, + dimension: Dict[str, str], + property: "AnomalyProperty", + **kwargs + ): + super(AnomalyResult, self).__init__(**kwargs) + self.metric_id = None + self.anomaly_detection_configuration_id = None + self.timestamp = timestamp + self.created_time = None + self.modified_time = None + self.dimension = dimension + self.property = property + + +class AnomalyResultList(msrest.serialization.Model): + """AnomalyResultList. + + All required parameters must be populated in order to send to Azure. + + :param next_link: Required. + :type next_link: str + :param value: Required. + :type value: list[~azure.ai.metricsadvisor.models.AnomalyResult] + """ + + _validation = { + 'next_link': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[AnomalyResult]'}, + } + + def __init__( + self, + *, + next_link: str, + value: List["AnomalyResult"], + **kwargs + ): + super(AnomalyResultList, self).__init__(**kwargs) + self.next_link = next_link + self.value = value + + +class DataFeedDetail(msrest.serialization.Model): + """DataFeedDetail. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: AzureApplicationInsightsDataFeed, AzureBlobDataFeed, AzureCosmosDBDataFeed, AzureDataExplorerDataFeed, AzureDataLakeStorageGen2DataFeed, AzureTableDataFeed, ElasticsearchDataFeed, HttpRequestDataFeed, InfluxDBDataFeed, MongoDBDataFeed, MySqlDataFeed, PostgreSqlDataFeed, SQLServerDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + } + + _subtype_map = { + 'data_source_type': {'AzureApplicationInsights': 'AzureApplicationInsightsDataFeed', 'AzureBlob': 'AzureBlobDataFeed', 'AzureCosmosDB': 'AzureCosmosDBDataFeed', 'AzureDataExplorer': 'AzureDataExplorerDataFeed', 'AzureDataLakeStorageGen2': 'AzureDataLakeStorageGen2DataFeed', 'AzureTable': 'AzureTableDataFeed', 'Elasticsearch': 'ElasticsearchDataFeed', 'HttpRequest': 'HttpRequestDataFeed', 'InfluxDB': 'InfluxDBDataFeed', 'MongoDB': 'MongoDBDataFeed', 'MySql': 'MySqlDataFeed', 'PostgreSql': 'PostgreSqlDataFeed', 'SqlServer': 'SQLServerDataFeed'} + } + + def __init__( + self, + *, + data_feed_name: str, + granularity_name: Union[str, "Granularity"], + metrics: List["Metric"], + data_start_from: datetime.datetime, + data_feed_description: Optional[str] = None, + granularity_amount: Optional[int] = None, + dimension: Optional[List["Dimension"]] = None, + timestamp_column: Optional[str] = None, + start_offset_in_seconds: Optional[int] = 0, + max_concurrency: Optional[int] = -1, + min_retry_interval_in_seconds: Optional[int] = -1, + stop_retry_after_in_seconds: Optional[int] = -1, + need_rollup: Optional[Union[str, "NeedRollupEnum"]] = "NeedRollup", + roll_up_method: Optional[Union[str, "DataFeedDetailRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "FillMissingPointType"]] = "SmartFilling", + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "ViewMode"]] = "Private", + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + action_link_template: Optional[str] = None, + **kwargs + ): + super(DataFeedDetail, self).__init__(**kwargs) + self.data_source_type = None # type: Optional[str] + self.data_feed_id = None + self.data_feed_name = data_feed_name + self.data_feed_description = data_feed_description + self.granularity_name = granularity_name + self.granularity_amount = granularity_amount + self.metrics = metrics + self.dimension = dimension + self.timestamp_column = timestamp_column + self.data_start_from = data_start_from + self.start_offset_in_seconds = start_offset_in_seconds + self.max_concurrency = max_concurrency + self.min_retry_interval_in_seconds = min_retry_interval_in_seconds + self.stop_retry_after_in_seconds = stop_retry_after_in_seconds + self.need_rollup = need_rollup + self.roll_up_method = roll_up_method + self.roll_up_columns = roll_up_columns + self.all_up_identification = all_up_identification + self.fill_missing_point_type = fill_missing_point_type + self.fill_missing_point_value = fill_missing_point_value + self.view_mode = view_mode + self.admins = admins + self.viewers = viewers + self.is_admin = None + self.creator = None + self.status = None + self.created_time = None + self.action_link_template = action_link_template + + +class AzureApplicationInsightsDataFeed(DataFeedDetail): + """AzureApplicationInsightsDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureApplicationInsightsParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureApplicationInsightsParameter'}, + } + + def __init__( + self, + *, + data_feed_name: str, + granularity_name: Union[str, "Granularity"], + metrics: List["Metric"], + data_start_from: datetime.datetime, + data_source_parameter: "AzureApplicationInsightsParameter", + data_feed_description: Optional[str] = None, + granularity_amount: Optional[int] = None, + dimension: Optional[List["Dimension"]] = None, + timestamp_column: Optional[str] = None, + start_offset_in_seconds: Optional[int] = 0, + max_concurrency: Optional[int] = -1, + min_retry_interval_in_seconds: Optional[int] = -1, + stop_retry_after_in_seconds: Optional[int] = -1, + need_rollup: Optional[Union[str, "NeedRollupEnum"]] = "NeedRollup", + roll_up_method: Optional[Union[str, "DataFeedDetailRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "FillMissingPointType"]] = "SmartFilling", + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "ViewMode"]] = "Private", + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + action_link_template: Optional[str] = None, + **kwargs + ): + super(AzureApplicationInsightsDataFeed, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, granularity_name=granularity_name, granularity_amount=granularity_amount, metrics=metrics, dimension=dimension, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'AzureApplicationInsights' # type: str + self.data_source_parameter = data_source_parameter + + +class DataFeedDetailPatch(msrest.serialization.Model): + """DataFeedDetailPatch. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: AzureApplicationInsightsDataFeedPatch, AzureBlobDataFeedPatch, AzureCosmosDBDataFeedPatch, AzureDataExplorerDataFeedPatch, AzureDataLakeStorageGen2DataFeedPatch, AzureTableDataFeedPatch, ElasticsearchDataFeedPatch, HttpRequestDataFeedPatch, InfluxDBDataFeedPatch, MongoDBDataFeedPatch, MySqlDataFeedPatch, PostgreSqlDataFeedPatch, SQLServerDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + } + + _subtype_map = { + 'data_source_type': {'AzureApplicationInsights': 'AzureApplicationInsightsDataFeedPatch', 'AzureBlob': 'AzureBlobDataFeedPatch', 'AzureCosmosDB': 'AzureCosmosDBDataFeedPatch', 'AzureDataExplorer': 'AzureDataExplorerDataFeedPatch', 'AzureDataLakeStorageGen2': 'AzureDataLakeStorageGen2DataFeedPatch', 'AzureTable': 'AzureTableDataFeedPatch', 'Elasticsearch': 'ElasticsearchDataFeedPatch', 'HttpRequest': 'HttpRequestDataFeedPatch', 'InfluxDB': 'InfluxDBDataFeedPatch', 'MongoDB': 'MongoDBDataFeedPatch', 'MySql': 'MySqlDataFeedPatch', 'PostgreSql': 'PostgreSqlDataFeedPatch', 'SqlServer': 'SQLServerDataFeedPatch'} + } + + def __init__( + self, + *, + data_feed_name: Optional[str] = None, + data_feed_description: Optional[str] = None, + timestamp_column: Optional[str] = None, + data_start_from: Optional[datetime.datetime] = None, + start_offset_in_seconds: Optional[int] = None, + max_concurrency: Optional[int] = None, + min_retry_interval_in_seconds: Optional[int] = None, + stop_retry_after_in_seconds: Optional[int] = None, + need_rollup: Optional[Union[str, "DataFeedDetailPatchNeedRollup"]] = None, + roll_up_method: Optional[Union[str, "DataFeedDetailPatchRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "DataFeedDetailPatchFillMissingPointType"]] = None, + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "DataFeedDetailPatchViewMode"]] = None, + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + status: Optional[Union[str, "DataFeedDetailPatchStatus"]] = None, + action_link_template: Optional[str] = None, + **kwargs + ): + super(DataFeedDetailPatch, self).__init__(**kwargs) + self.data_source_type = None # type: Optional[str] + self.data_feed_name = data_feed_name + self.data_feed_description = data_feed_description + self.timestamp_column = timestamp_column + self.data_start_from = data_start_from + self.start_offset_in_seconds = start_offset_in_seconds + self.max_concurrency = max_concurrency + self.min_retry_interval_in_seconds = min_retry_interval_in_seconds + self.stop_retry_after_in_seconds = stop_retry_after_in_seconds + self.need_rollup = need_rollup + self.roll_up_method = roll_up_method + self.roll_up_columns = roll_up_columns + self.all_up_identification = all_up_identification + self.fill_missing_point_type = fill_missing_point_type + self.fill_missing_point_value = fill_missing_point_value + self.view_mode = view_mode + self.admins = admins + self.viewers = viewers + self.status = status + self.action_link_template = action_link_template + + +class AzureApplicationInsightsDataFeedPatch(DataFeedDetailPatch): + """AzureApplicationInsightsDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureApplicationInsightsParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureApplicationInsightsParameter'}, + } + + def __init__( + self, + *, + data_feed_name: Optional[str] = None, + data_feed_description: Optional[str] = None, + timestamp_column: Optional[str] = None, + data_start_from: Optional[datetime.datetime] = None, + start_offset_in_seconds: Optional[int] = None, + max_concurrency: Optional[int] = None, + min_retry_interval_in_seconds: Optional[int] = None, + stop_retry_after_in_seconds: Optional[int] = None, + need_rollup: Optional[Union[str, "DataFeedDetailPatchNeedRollup"]] = None, + roll_up_method: Optional[Union[str, "DataFeedDetailPatchRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "DataFeedDetailPatchFillMissingPointType"]] = None, + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "DataFeedDetailPatchViewMode"]] = None, + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + status: Optional[Union[str, "DataFeedDetailPatchStatus"]] = None, + action_link_template: Optional[str] = None, + data_source_parameter: Optional["AzureApplicationInsightsParameter"] = None, + **kwargs + ): + super(AzureApplicationInsightsDataFeedPatch, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, status=status, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'AzureApplicationInsights' # type: str + self.data_source_parameter = data_source_parameter + + +class AzureApplicationInsightsParameter(msrest.serialization.Model): + """AzureApplicationInsightsParameter. + + All required parameters must be populated in order to send to Azure. + + :param azure_cloud: Required. Azure cloud environment. + :type azure_cloud: str + :param application_id: Required. Azure Application Insights ID. + :type application_id: str + :param api_key: Required. API Key. + :type api_key: str + :param query: Required. Query. + :type query: str + """ + + _validation = { + 'azure_cloud': {'required': True}, + 'application_id': {'required': True}, + 'api_key': {'required': True}, + 'query': {'required': True}, + } + + _attribute_map = { + 'azure_cloud': {'key': 'azureCloud', 'type': 'str'}, + 'application_id': {'key': 'applicationId', 'type': 'str'}, + 'api_key': {'key': 'apiKey', 'type': 'str'}, + 'query': {'key': 'query', 'type': 'str'}, + } + + def __init__( + self, + *, + azure_cloud: str, + application_id: str, + api_key: str, + query: str, + **kwargs + ): + super(AzureApplicationInsightsParameter, self).__init__(**kwargs) + self.azure_cloud = azure_cloud + self.application_id = application_id + self.api_key = api_key + self.query = query + + +class AzureBlobDataFeed(DataFeedDetail): + """AzureBlobDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureBlobParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureBlobParameter'}, + } + + def __init__( + self, + *, + data_feed_name: str, + granularity_name: Union[str, "Granularity"], + metrics: List["Metric"], + data_start_from: datetime.datetime, + data_source_parameter: "AzureBlobParameter", + data_feed_description: Optional[str] = None, + granularity_amount: Optional[int] = None, + dimension: Optional[List["Dimension"]] = None, + timestamp_column: Optional[str] = None, + start_offset_in_seconds: Optional[int] = 0, + max_concurrency: Optional[int] = -1, + min_retry_interval_in_seconds: Optional[int] = -1, + stop_retry_after_in_seconds: Optional[int] = -1, + need_rollup: Optional[Union[str, "NeedRollupEnum"]] = "NeedRollup", + roll_up_method: Optional[Union[str, "DataFeedDetailRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "FillMissingPointType"]] = "SmartFilling", + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "ViewMode"]] = "Private", + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + action_link_template: Optional[str] = None, + **kwargs + ): + super(AzureBlobDataFeed, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, granularity_name=granularity_name, granularity_amount=granularity_amount, metrics=metrics, dimension=dimension, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'AzureBlob' # type: str + self.data_source_parameter = data_source_parameter + + +class AzureBlobDataFeedPatch(DataFeedDetailPatch): + """AzureBlobDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureBlobParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureBlobParameter'}, + } + + def __init__( + self, + *, + data_feed_name: Optional[str] = None, + data_feed_description: Optional[str] = None, + timestamp_column: Optional[str] = None, + data_start_from: Optional[datetime.datetime] = None, + start_offset_in_seconds: Optional[int] = None, + max_concurrency: Optional[int] = None, + min_retry_interval_in_seconds: Optional[int] = None, + stop_retry_after_in_seconds: Optional[int] = None, + need_rollup: Optional[Union[str, "DataFeedDetailPatchNeedRollup"]] = None, + roll_up_method: Optional[Union[str, "DataFeedDetailPatchRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "DataFeedDetailPatchFillMissingPointType"]] = None, + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "DataFeedDetailPatchViewMode"]] = None, + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + status: Optional[Union[str, "DataFeedDetailPatchStatus"]] = None, + action_link_template: Optional[str] = None, + data_source_parameter: Optional["AzureBlobParameter"] = None, + **kwargs + ): + super(AzureBlobDataFeedPatch, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, status=status, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'AzureBlob' # type: str + self.data_source_parameter = data_source_parameter + + +class AzureBlobParameter(msrest.serialization.Model): + """AzureBlobParameter. + + All required parameters must be populated in order to send to Azure. + + :param connection_string: Required. Azure Blob connection string. + :type connection_string: str + :param container: Required. Container. + :type container: str + :param blob_template: Required. Blob Template. + :type blob_template: str + """ + + _validation = { + 'connection_string': {'required': True}, + 'container': {'required': True}, + 'blob_template': {'required': True}, + } + + _attribute_map = { + 'connection_string': {'key': 'connectionString', 'type': 'str'}, + 'container': {'key': 'container', 'type': 'str'}, + 'blob_template': {'key': 'blobTemplate', 'type': 'str'}, + } + + def __init__( + self, + *, + connection_string: str, + container: str, + blob_template: str, + **kwargs + ): + super(AzureBlobParameter, self).__init__(**kwargs) + self.connection_string = connection_string + self.container = container + self.blob_template = blob_template + + +class AzureCosmosDBDataFeed(DataFeedDetail): + """AzureCosmosDBDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureCosmosDBParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureCosmosDBParameter'}, + } + + def __init__( + self, + *, + data_feed_name: str, + granularity_name: Union[str, "Granularity"], + metrics: List["Metric"], + data_start_from: datetime.datetime, + data_source_parameter: "AzureCosmosDBParameter", + data_feed_description: Optional[str] = None, + granularity_amount: Optional[int] = None, + dimension: Optional[List["Dimension"]] = None, + timestamp_column: Optional[str] = None, + start_offset_in_seconds: Optional[int] = 0, + max_concurrency: Optional[int] = -1, + min_retry_interval_in_seconds: Optional[int] = -1, + stop_retry_after_in_seconds: Optional[int] = -1, + need_rollup: Optional[Union[str, "NeedRollupEnum"]] = "NeedRollup", + roll_up_method: Optional[Union[str, "DataFeedDetailRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "FillMissingPointType"]] = "SmartFilling", + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "ViewMode"]] = "Private", + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + action_link_template: Optional[str] = None, + **kwargs + ): + super(AzureCosmosDBDataFeed, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, granularity_name=granularity_name, granularity_amount=granularity_amount, metrics=metrics, dimension=dimension, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'AzureCosmosDB' # type: str + self.data_source_parameter = data_source_parameter + + +class AzureCosmosDBDataFeedPatch(DataFeedDetailPatch): + """AzureCosmosDBDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureCosmosDBParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureCosmosDBParameter'}, + } + + def __init__( + self, + *, + data_feed_name: Optional[str] = None, + data_feed_description: Optional[str] = None, + timestamp_column: Optional[str] = None, + data_start_from: Optional[datetime.datetime] = None, + start_offset_in_seconds: Optional[int] = None, + max_concurrency: Optional[int] = None, + min_retry_interval_in_seconds: Optional[int] = None, + stop_retry_after_in_seconds: Optional[int] = None, + need_rollup: Optional[Union[str, "DataFeedDetailPatchNeedRollup"]] = None, + roll_up_method: Optional[Union[str, "DataFeedDetailPatchRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "DataFeedDetailPatchFillMissingPointType"]] = None, + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "DataFeedDetailPatchViewMode"]] = None, + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + status: Optional[Union[str, "DataFeedDetailPatchStatus"]] = None, + action_link_template: Optional[str] = None, + data_source_parameter: Optional["AzureCosmosDBParameter"] = None, + **kwargs + ): + super(AzureCosmosDBDataFeedPatch, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, status=status, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'AzureCosmosDB' # type: str + self.data_source_parameter = data_source_parameter + + +class AzureCosmosDBParameter(msrest.serialization.Model): + """AzureCosmosDBParameter. + + All required parameters must be populated in order to send to Azure. + + :param connection_string: Required. Azure CosmosDB connection string. + :type connection_string: str + :param sql_query: Required. Query script. + :type sql_query: str + :param database: Required. Database name. + :type database: str + :param collection_id: Required. Collection id. + :type collection_id: str + """ + + _validation = { + 'connection_string': {'required': True}, + 'sql_query': {'required': True}, + 'database': {'required': True}, + 'collection_id': {'required': True}, + } + + _attribute_map = { + 'connection_string': {'key': 'connectionString', 'type': 'str'}, + 'sql_query': {'key': 'sqlQuery', 'type': 'str'}, + 'database': {'key': 'database', 'type': 'str'}, + 'collection_id': {'key': 'collectionId', 'type': 'str'}, + } + + def __init__( + self, + *, + connection_string: str, + sql_query: str, + database: str, + collection_id: str, + **kwargs + ): + super(AzureCosmosDBParameter, self).__init__(**kwargs) + self.connection_string = connection_string + self.sql_query = sql_query + self.database = database + self.collection_id = collection_id + + +class AzureDataExplorerDataFeed(DataFeedDetail): + """AzureDataExplorerDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + *, + data_feed_name: str, + granularity_name: Union[str, "Granularity"], + metrics: List["Metric"], + data_start_from: datetime.datetime, + data_source_parameter: "SqlSourceParameter", + data_feed_description: Optional[str] = None, + granularity_amount: Optional[int] = None, + dimension: Optional[List["Dimension"]] = None, + timestamp_column: Optional[str] = None, + start_offset_in_seconds: Optional[int] = 0, + max_concurrency: Optional[int] = -1, + min_retry_interval_in_seconds: Optional[int] = -1, + stop_retry_after_in_seconds: Optional[int] = -1, + need_rollup: Optional[Union[str, "NeedRollupEnum"]] = "NeedRollup", + roll_up_method: Optional[Union[str, "DataFeedDetailRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "FillMissingPointType"]] = "SmartFilling", + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "ViewMode"]] = "Private", + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + action_link_template: Optional[str] = None, + **kwargs + ): + super(AzureDataExplorerDataFeed, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, granularity_name=granularity_name, granularity_amount=granularity_amount, metrics=metrics, dimension=dimension, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'AzureDataExplorer' # type: str + self.data_source_parameter = data_source_parameter + + +class AzureDataExplorerDataFeedPatch(DataFeedDetailPatch): + """AzureDataExplorerDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + *, + data_feed_name: Optional[str] = None, + data_feed_description: Optional[str] = None, + timestamp_column: Optional[str] = None, + data_start_from: Optional[datetime.datetime] = None, + start_offset_in_seconds: Optional[int] = None, + max_concurrency: Optional[int] = None, + min_retry_interval_in_seconds: Optional[int] = None, + stop_retry_after_in_seconds: Optional[int] = None, + need_rollup: Optional[Union[str, "DataFeedDetailPatchNeedRollup"]] = None, + roll_up_method: Optional[Union[str, "DataFeedDetailPatchRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "DataFeedDetailPatchFillMissingPointType"]] = None, + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "DataFeedDetailPatchViewMode"]] = None, + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + status: Optional[Union[str, "DataFeedDetailPatchStatus"]] = None, + action_link_template: Optional[str] = None, + data_source_parameter: Optional["SqlSourceParameter"] = None, + **kwargs + ): + super(AzureDataExplorerDataFeedPatch, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, status=status, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'AzureDataExplorer' # type: str + self.data_source_parameter = data_source_parameter + + +class AzureDataLakeStorageGen2DataFeed(DataFeedDetail): + """AzureDataLakeStorageGen2DataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureDataLakeStorageGen2Parameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureDataLakeStorageGen2Parameter'}, + } + + def __init__( + self, + *, + data_feed_name: str, + granularity_name: Union[str, "Granularity"], + metrics: List["Metric"], + data_start_from: datetime.datetime, + data_source_parameter: "AzureDataLakeStorageGen2Parameter", + data_feed_description: Optional[str] = None, + granularity_amount: Optional[int] = None, + dimension: Optional[List["Dimension"]] = None, + timestamp_column: Optional[str] = None, + start_offset_in_seconds: Optional[int] = 0, + max_concurrency: Optional[int] = -1, + min_retry_interval_in_seconds: Optional[int] = -1, + stop_retry_after_in_seconds: Optional[int] = -1, + need_rollup: Optional[Union[str, "NeedRollupEnum"]] = "NeedRollup", + roll_up_method: Optional[Union[str, "DataFeedDetailRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "FillMissingPointType"]] = "SmartFilling", + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "ViewMode"]] = "Private", + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + action_link_template: Optional[str] = None, + **kwargs + ): + super(AzureDataLakeStorageGen2DataFeed, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, granularity_name=granularity_name, granularity_amount=granularity_amount, metrics=metrics, dimension=dimension, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'AzureDataLakeStorageGen2' # type: str + self.data_source_parameter = data_source_parameter + + +class AzureDataLakeStorageGen2DataFeedPatch(DataFeedDetailPatch): + """AzureDataLakeStorageGen2DataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureDataLakeStorageGen2Parameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureDataLakeStorageGen2Parameter'}, + } + + def __init__( + self, + *, + data_feed_name: Optional[str] = None, + data_feed_description: Optional[str] = None, + timestamp_column: Optional[str] = None, + data_start_from: Optional[datetime.datetime] = None, + start_offset_in_seconds: Optional[int] = None, + max_concurrency: Optional[int] = None, + min_retry_interval_in_seconds: Optional[int] = None, + stop_retry_after_in_seconds: Optional[int] = None, + need_rollup: Optional[Union[str, "DataFeedDetailPatchNeedRollup"]] = None, + roll_up_method: Optional[Union[str, "DataFeedDetailPatchRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "DataFeedDetailPatchFillMissingPointType"]] = None, + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "DataFeedDetailPatchViewMode"]] = None, + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + status: Optional[Union[str, "DataFeedDetailPatchStatus"]] = None, + action_link_template: Optional[str] = None, + data_source_parameter: Optional["AzureDataLakeStorageGen2Parameter"] = None, + **kwargs + ): + super(AzureDataLakeStorageGen2DataFeedPatch, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, status=status, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'AzureDataLakeStorageGen2' # type: str + self.data_source_parameter = data_source_parameter + + +class AzureDataLakeStorageGen2Parameter(msrest.serialization.Model): + """AzureDataLakeStorageGen2Parameter. + + All required parameters must be populated in order to send to Azure. + + :param account_name: Required. Account name. + :type account_name: str + :param account_key: Required. Account key. + :type account_key: str + :param file_system_name: Required. File system name (Container). + :type file_system_name: str + :param directory_template: Required. Directory template. + :type directory_template: str + :param file_template: Required. File template. + :type file_template: str + """ + + _validation = { + 'account_name': {'required': True}, + 'account_key': {'required': True}, + 'file_system_name': {'required': True}, + 'directory_template': {'required': True}, + 'file_template': {'required': True}, + } + + _attribute_map = { + 'account_name': {'key': 'accountName', 'type': 'str'}, + 'account_key': {'key': 'accountKey', 'type': 'str'}, + 'file_system_name': {'key': 'fileSystemName', 'type': 'str'}, + 'directory_template': {'key': 'directoryTemplate', 'type': 'str'}, + 'file_template': {'key': 'fileTemplate', 'type': 'str'}, + } + + def __init__( + self, + *, + account_name: str, + account_key: str, + file_system_name: str, + directory_template: str, + file_template: str, + **kwargs + ): + super(AzureDataLakeStorageGen2Parameter, self).__init__(**kwargs) + self.account_name = account_name + self.account_key = account_key + self.file_system_name = file_system_name + self.directory_template = directory_template + self.file_template = file_template + + +class AzureTableDataFeed(DataFeedDetail): + """AzureTableDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureTableParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureTableParameter'}, + } + + def __init__( + self, + *, + data_feed_name: str, + granularity_name: Union[str, "Granularity"], + metrics: List["Metric"], + data_start_from: datetime.datetime, + data_source_parameter: "AzureTableParameter", + data_feed_description: Optional[str] = None, + granularity_amount: Optional[int] = None, + dimension: Optional[List["Dimension"]] = None, + timestamp_column: Optional[str] = None, + start_offset_in_seconds: Optional[int] = 0, + max_concurrency: Optional[int] = -1, + min_retry_interval_in_seconds: Optional[int] = -1, + stop_retry_after_in_seconds: Optional[int] = -1, + need_rollup: Optional[Union[str, "NeedRollupEnum"]] = "NeedRollup", + roll_up_method: Optional[Union[str, "DataFeedDetailRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "FillMissingPointType"]] = "SmartFilling", + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "ViewMode"]] = "Private", + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + action_link_template: Optional[str] = None, + **kwargs + ): + super(AzureTableDataFeed, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, granularity_name=granularity_name, granularity_amount=granularity_amount, metrics=metrics, dimension=dimension, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'AzureTable' # type: str + self.data_source_parameter = data_source_parameter + + +class AzureTableDataFeedPatch(DataFeedDetailPatch): + """AzureTableDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.AzureTableParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'AzureTableParameter'}, + } + + def __init__( + self, + *, + data_feed_name: Optional[str] = None, + data_feed_description: Optional[str] = None, + timestamp_column: Optional[str] = None, + data_start_from: Optional[datetime.datetime] = None, + start_offset_in_seconds: Optional[int] = None, + max_concurrency: Optional[int] = None, + min_retry_interval_in_seconds: Optional[int] = None, + stop_retry_after_in_seconds: Optional[int] = None, + need_rollup: Optional[Union[str, "DataFeedDetailPatchNeedRollup"]] = None, + roll_up_method: Optional[Union[str, "DataFeedDetailPatchRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "DataFeedDetailPatchFillMissingPointType"]] = None, + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "DataFeedDetailPatchViewMode"]] = None, + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + status: Optional[Union[str, "DataFeedDetailPatchStatus"]] = None, + action_link_template: Optional[str] = None, + data_source_parameter: Optional["AzureTableParameter"] = None, + **kwargs + ): + super(AzureTableDataFeedPatch, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, status=status, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'AzureTable' # type: str + self.data_source_parameter = data_source_parameter + + +class AzureTableParameter(msrest.serialization.Model): + """AzureTableParameter. + + All required parameters must be populated in order to send to Azure. + + :param connection_string: Required. Azure Table connection string. + :type connection_string: str + :param table: Required. Table name. + :type table: str + :param query: Required. Query script. + :type query: str + """ + + _validation = { + 'connection_string': {'required': True}, + 'table': {'required': True}, + 'query': {'required': True}, + } + + _attribute_map = { + 'connection_string': {'key': 'connectionString', 'type': 'str'}, + 'table': {'key': 'table', 'type': 'str'}, + 'query': {'key': 'query', 'type': 'str'}, + } + + def __init__( + self, + *, + connection_string: str, + table: str, + query: str, + **kwargs + ): + super(AzureTableParameter, self).__init__(**kwargs) + self.connection_string = connection_string + self.table = table + self.query = query + + +class ChangePointFeedback(MetricFeedback): + """ChangePointFeedback. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param feedback_type: Required. feedback type.Constant filled by server. Possible values + include: "Anomaly", "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :ivar feedback_id: feedback unique id. + :vartype feedback_id: str + :ivar created_time: feedback created time. + :vartype created_time: ~datetime.datetime + :ivar user_principal: user who gives this feedback. + :vartype user_principal: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param dimension_filter: Required. + :type dimension_filter: ~azure.ai.metricsadvisor.models.FeedbackDimensionFilter + :param start_time: Required. the start timestamp of feedback timerange. + :type start_time: ~datetime.datetime + :param end_time: Required. the end timestamp of feedback timerange, when equals to startTime + means only one timestamp. + :type end_time: ~datetime.datetime + :param value: Required. + :type value: ~azure.ai.metricsadvisor.models.ChangePointFeedbackValue + """ + + _validation = { + 'feedback_type': {'required': True}, + 'feedback_id': {'readonly': True}, + 'created_time': {'readonly': True}, + 'user_principal': {'readonly': True}, + 'metric_id': {'required': True}, + 'dimension_filter': {'required': True}, + 'start_time': {'required': True}, + 'end_time': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'feedback_id': {'key': 'feedbackId', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'user_principal': {'key': 'userPrincipal', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': 'FeedbackDimensionFilter'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'value': {'key': 'value', 'type': 'ChangePointFeedbackValue'}, + } + + def __init__( + self, + *, + metric_id: str, + dimension_filter: "FeedbackDimensionFilter", + start_time: datetime.datetime, + end_time: datetime.datetime, + value: "ChangePointFeedbackValue", + **kwargs + ): + super(ChangePointFeedback, self).__init__(metric_id=metric_id, dimension_filter=dimension_filter, **kwargs) + self.feedback_type = 'ChangePoint' # type: str + self.start_time = start_time + self.end_time = end_time + self.value = value + + +class ChangePointFeedbackValue(msrest.serialization.Model): + """ChangePointFeedbackValue. + + All required parameters must be populated in order to send to Azure. + + :param change_point_value: Required. Possible values include: "AutoDetect", "ChangePoint", + "NotChangePoint". + :type change_point_value: str or ~azure.ai.metricsadvisor.models.ChangePointValue + """ + + _validation = { + 'change_point_value': {'required': True}, + } + + _attribute_map = { + 'change_point_value': {'key': 'changePointValue', 'type': 'str'}, + } + + def __init__( + self, + *, + change_point_value: Union[str, "ChangePointValue"], + **kwargs + ): + super(ChangePointFeedbackValue, self).__init__(**kwargs) + self.change_point_value = change_point_value + + +class ChangeThresholdCondition(msrest.serialization.Model): + """ChangeThresholdCondition. + + All required parameters must be populated in order to send to Azure. + + :param change_percentage: Required. change percentage, value range : [0, +∞). + :type change_percentage: float + :param shift_point: Required. shift point, value range : [1, +∞). + :type shift_point: int + :param within_range: Required. if the withinRange = true, detected data is abnormal when the + value falls in the range, in this case anomalyDetectorDirection must be Both + if the withinRange = false, detected data is abnormal when the value falls out of the range. + :type within_range: bool + :param anomaly_detector_direction: Required. detection direction. Possible values include: + "Both", "Down", "Up". + :type anomaly_detector_direction: str or + ~azure.ai.metricsadvisor.models.AnomalyDetectorDirection + :param suppress_condition: Required. + :type suppress_condition: ~azure.ai.metricsadvisor.models.SuppressCondition + """ + + _validation = { + 'change_percentage': {'required': True}, + 'shift_point': {'required': True}, + 'within_range': {'required': True}, + 'anomaly_detector_direction': {'required': True}, + 'suppress_condition': {'required': True}, + } + + _attribute_map = { + 'change_percentage': {'key': 'changePercentage', 'type': 'float'}, + 'shift_point': {'key': 'shiftPoint', 'type': 'int'}, + 'within_range': {'key': 'withinRange', 'type': 'bool'}, + 'anomaly_detector_direction': {'key': 'anomalyDetectorDirection', 'type': 'str'}, + 'suppress_condition': {'key': 'suppressCondition', 'type': 'SuppressCondition'}, + } + + def __init__( + self, + *, + change_percentage: float, + shift_point: int, + within_range: bool, + anomaly_detector_direction: Union[str, "AnomalyDetectorDirection"], + suppress_condition: "SuppressCondition", + **kwargs + ): + super(ChangeThresholdCondition, self).__init__(**kwargs) + self.change_percentage = change_percentage + self.shift_point = shift_point + self.within_range = within_range + self.anomaly_detector_direction = anomaly_detector_direction + self.suppress_condition = suppress_condition + + +class CommentFeedback(MetricFeedback): + """CommentFeedback. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param feedback_type: Required. feedback type.Constant filled by server. Possible values + include: "Anomaly", "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :ivar feedback_id: feedback unique id. + :vartype feedback_id: str + :ivar created_time: feedback created time. + :vartype created_time: ~datetime.datetime + :ivar user_principal: user who gives this feedback. + :vartype user_principal: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param dimension_filter: Required. + :type dimension_filter: ~azure.ai.metricsadvisor.models.FeedbackDimensionFilter + :param start_time: the start timestamp of feedback timerange. + :type start_time: ~datetime.datetime + :param end_time: the end timestamp of feedback timerange, when equals to startTime means only + one timestamp. + :type end_time: ~datetime.datetime + :param value: Required. + :type value: ~azure.ai.metricsadvisor.models.CommentFeedbackValue + """ + + _validation = { + 'feedback_type': {'required': True}, + 'feedback_id': {'readonly': True}, + 'created_time': {'readonly': True}, + 'user_principal': {'readonly': True}, + 'metric_id': {'required': True}, + 'dimension_filter': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'feedback_id': {'key': 'feedbackId', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'user_principal': {'key': 'userPrincipal', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': 'FeedbackDimensionFilter'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'value': {'key': 'value', 'type': 'CommentFeedbackValue'}, + } + + def __init__( + self, + *, + metric_id: str, + dimension_filter: "FeedbackDimensionFilter", + value: "CommentFeedbackValue", + start_time: Optional[datetime.datetime] = None, + end_time: Optional[datetime.datetime] = None, + **kwargs + ): + super(CommentFeedback, self).__init__(metric_id=metric_id, dimension_filter=dimension_filter, **kwargs) + self.feedback_type = 'Comment' # type: str + self.start_time = start_time + self.end_time = end_time + self.value = value + + +class CommentFeedbackValue(msrest.serialization.Model): + """CommentFeedbackValue. + + All required parameters must be populated in order to send to Azure. + + :param comment_value: Required. the comment string. + :type comment_value: str + """ + + _validation = { + 'comment_value': {'required': True}, + } + + _attribute_map = { + 'comment_value': {'key': 'commentValue', 'type': 'str'}, + } + + def __init__( + self, + *, + comment_value: str, + **kwargs + ): + super(CommentFeedbackValue, self).__init__(**kwargs) + self.comment_value = comment_value + + +class DataFeedIngestionProgress(msrest.serialization.Model): + """DataFeedIngestionProgress. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar latest_success_timestamp: the timestamp of lastest success ingestion job. + null indicates not available. + :vartype latest_success_timestamp: ~datetime.datetime + :ivar latest_active_timestamp: the timestamp of lastest ingestion job with status update. + null indicates not available. + :vartype latest_active_timestamp: ~datetime.datetime + """ + + _validation = { + 'latest_success_timestamp': {'readonly': True}, + 'latest_active_timestamp': {'readonly': True}, + } + + _attribute_map = { + 'latest_success_timestamp': {'key': 'latestSuccessTimestamp', 'type': 'iso-8601'}, + 'latest_active_timestamp': {'key': 'latestActiveTimestamp', 'type': 'iso-8601'}, + } + + def __init__( + self, + **kwargs + ): + super(DataFeedIngestionProgress, self).__init__(**kwargs) + self.latest_success_timestamp = None + self.latest_active_timestamp = None + + +class DataFeedList(msrest.serialization.Model): + """DataFeedList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar next_link: + :vartype next_link: str + :ivar value: + :vartype value: list[~azure.ai.metricsadvisor.models.DataFeedDetail] + """ + + _validation = { + 'next_link': {'readonly': True}, + 'value': {'readonly': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[DataFeedDetail]'}, + } + + def __init__( + self, + **kwargs + ): + super(DataFeedList, self).__init__(**kwargs) + self.next_link = None + self.value = None + + +class DetectionAnomalyFilterCondition(msrest.serialization.Model): + """DetectionAnomalyFilterCondition. + + :param dimension_filter: dimension filter. + :type dimension_filter: list[~azure.ai.metricsadvisor.models.DimensionGroupIdentity] + :param severity_filter: + :type severity_filter: ~azure.ai.metricsadvisor.models.SeverityFilterCondition + """ + + _validation = { + 'dimension_filter': {'unique': True}, + } + + _attribute_map = { + 'dimension_filter': {'key': 'dimensionFilter', 'type': '[DimensionGroupIdentity]'}, + 'severity_filter': {'key': 'severityFilter', 'type': 'SeverityFilterCondition'}, + } + + def __init__( + self, + *, + dimension_filter: Optional[List["DimensionGroupIdentity"]] = None, + severity_filter: Optional["SeverityFilterCondition"] = None, + **kwargs + ): + super(DetectionAnomalyFilterCondition, self).__init__(**kwargs) + self.dimension_filter = dimension_filter + self.severity_filter = severity_filter + + +class DetectionAnomalyResultQuery(msrest.serialization.Model): + """DetectionAnomalyResultQuery. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. start time. + :type start_time: ~datetime.datetime + :param end_time: Required. end time. + :type end_time: ~datetime.datetime + :param filter: + :type filter: ~azure.ai.metricsadvisor.models.DetectionAnomalyFilterCondition + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'filter': {'key': 'filter', 'type': 'DetectionAnomalyFilterCondition'}, + } + + def __init__( + self, + *, + start_time: datetime.datetime, + end_time: datetime.datetime, + filter: Optional["DetectionAnomalyFilterCondition"] = None, + **kwargs + ): + super(DetectionAnomalyResultQuery, self).__init__(**kwargs) + self.start_time = start_time + self.end_time = end_time + self.filter = filter + + +class DetectionIncidentFilterCondition(msrest.serialization.Model): + """DetectionIncidentFilterCondition. + + :param dimension_filter: dimension filter. + :type dimension_filter: list[~azure.ai.metricsadvisor.models.DimensionGroupIdentity] + """ + + _validation = { + 'dimension_filter': {'unique': True}, + } + + _attribute_map = { + 'dimension_filter': {'key': 'dimensionFilter', 'type': '[DimensionGroupIdentity]'}, + } + + def __init__( + self, + *, + dimension_filter: Optional[List["DimensionGroupIdentity"]] = None, + **kwargs + ): + super(DetectionIncidentFilterCondition, self).__init__(**kwargs) + self.dimension_filter = dimension_filter + + +class DetectionIncidentResultQuery(msrest.serialization.Model): + """DetectionIncidentResultQuery. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. start time. + :type start_time: ~datetime.datetime + :param end_time: Required. end time. + :type end_time: ~datetime.datetime + :param filter: + :type filter: ~azure.ai.metricsadvisor.models.DetectionIncidentFilterCondition + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'filter': {'key': 'filter', 'type': 'DetectionIncidentFilterCondition'}, + } + + def __init__( + self, + *, + start_time: datetime.datetime, + end_time: datetime.datetime, + filter: Optional["DetectionIncidentFilterCondition"] = None, + **kwargs + ): + super(DetectionIncidentResultQuery, self).__init__(**kwargs) + self.start_time = start_time + self.end_time = end_time + self.filter = filter + + +class DetectionSeriesQuery(msrest.serialization.Model): + """DetectionSeriesQuery. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. start time. + :type start_time: ~datetime.datetime + :param end_time: Required. end time. + :type end_time: ~datetime.datetime + :param series: Required. series. + :type series: list[~azure.ai.metricsadvisor.models.SeriesIdentity] + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + 'series': {'required': True, 'unique': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'series': {'key': 'series', 'type': '[SeriesIdentity]'}, + } + + def __init__( + self, + *, + start_time: datetime.datetime, + end_time: datetime.datetime, + series: List["SeriesIdentity"], + **kwargs + ): + super(DetectionSeriesQuery, self).__init__(**kwargs) + self.start_time = start_time + self.end_time = end_time + self.series = series + + +class Dimension(msrest.serialization.Model): + """Dimension. + + All required parameters must be populated in order to send to Azure. + + :param dimension_name: Required. dimension name. + :type dimension_name: str + :param dimension_display_name: dimension display name. + :type dimension_display_name: str + """ + + _validation = { + 'dimension_name': {'required': True}, + 'dimension_display_name': {'pattern': r'[.a-zA-Z0-9_-]+'}, + } + + _attribute_map = { + 'dimension_name': {'key': 'dimensionName', 'type': 'str'}, + 'dimension_display_name': {'key': 'dimensionDisplayName', 'type': 'str'}, + } + + def __init__( + self, + *, + dimension_name: str, + dimension_display_name: Optional[str] = None, + **kwargs + ): + super(Dimension, self).__init__(**kwargs) + self.dimension_name = dimension_name + self.dimension_display_name = dimension_display_name + + +class DimensionGroupConfiguration(msrest.serialization.Model): + """DimensionGroupConfiguration. + + All required parameters must be populated in order to send to Azure. + + :param group: Required. + :type group: ~azure.ai.metricsadvisor.models.DimensionGroupIdentity + :param condition_operator: condition operator + + should be specified when combining multiple detection conditions. Possible values include: + "AND", "OR". + :type condition_operator: str or + ~azure.ai.metricsadvisor.models.DimensionGroupConfigurationConditionOperator + :param smart_detection_condition: + :type smart_detection_condition: ~azure.ai.metricsadvisor.models.SmartDetectionCondition + :param hard_threshold_condition: + :type hard_threshold_condition: ~azure.ai.metricsadvisor.models.HardThresholdCondition + :param change_threshold_condition: + :type change_threshold_condition: ~azure.ai.metricsadvisor.models.ChangeThresholdCondition + """ + + _validation = { + 'group': {'required': True}, + } + + _attribute_map = { + 'group': {'key': 'group', 'type': 'DimensionGroupIdentity'}, + 'condition_operator': {'key': 'conditionOperator', 'type': 'str'}, + 'smart_detection_condition': {'key': 'smartDetectionCondition', 'type': 'SmartDetectionCondition'}, + 'hard_threshold_condition': {'key': 'hardThresholdCondition', 'type': 'HardThresholdCondition'}, + 'change_threshold_condition': {'key': 'changeThresholdCondition', 'type': 'ChangeThresholdCondition'}, + } + + def __init__( + self, + *, + group: "DimensionGroupIdentity", + condition_operator: Optional[Union[str, "DimensionGroupConfigurationConditionOperator"]] = None, + smart_detection_condition: Optional["SmartDetectionCondition"] = None, + hard_threshold_condition: Optional["HardThresholdCondition"] = None, + change_threshold_condition: Optional["ChangeThresholdCondition"] = None, + **kwargs + ): + super(DimensionGroupConfiguration, self).__init__(**kwargs) + self.group = group + self.condition_operator = condition_operator + self.smart_detection_condition = smart_detection_condition + self.hard_threshold_condition = hard_threshold_condition + self.change_threshold_condition = change_threshold_condition + + +class DimensionGroupIdentity(msrest.serialization.Model): + """DimensionGroupIdentity. + + All required parameters must be populated in order to send to Azure. + + :param dimension: Required. dimension specified for series group. + :type dimension: dict[str, str] + """ + + _validation = { + 'dimension': {'required': True}, + } + + _attribute_map = { + 'dimension': {'key': 'dimension', 'type': '{str}'}, + } + + def __init__( + self, + *, + dimension: Dict[str, str], + **kwargs + ): + super(DimensionGroupIdentity, self).__init__(**kwargs) + self.dimension = dimension + + +class ElasticsearchDataFeed(DataFeedDetail): + """ElasticsearchDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.ElasticsearchParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'ElasticsearchParameter'}, + } + + def __init__( + self, + *, + data_feed_name: str, + granularity_name: Union[str, "Granularity"], + metrics: List["Metric"], + data_start_from: datetime.datetime, + data_source_parameter: "ElasticsearchParameter", + data_feed_description: Optional[str] = None, + granularity_amount: Optional[int] = None, + dimension: Optional[List["Dimension"]] = None, + timestamp_column: Optional[str] = None, + start_offset_in_seconds: Optional[int] = 0, + max_concurrency: Optional[int] = -1, + min_retry_interval_in_seconds: Optional[int] = -1, + stop_retry_after_in_seconds: Optional[int] = -1, + need_rollup: Optional[Union[str, "NeedRollupEnum"]] = "NeedRollup", + roll_up_method: Optional[Union[str, "DataFeedDetailRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "FillMissingPointType"]] = "SmartFilling", + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "ViewMode"]] = "Private", + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + action_link_template: Optional[str] = None, + **kwargs + ): + super(ElasticsearchDataFeed, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, granularity_name=granularity_name, granularity_amount=granularity_amount, metrics=metrics, dimension=dimension, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'Elasticsearch' # type: str + self.data_source_parameter = data_source_parameter + + +class ElasticsearchDataFeedPatch(DataFeedDetailPatch): + """ElasticsearchDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.ElasticsearchParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'ElasticsearchParameter'}, + } + + def __init__( + self, + *, + data_feed_name: Optional[str] = None, + data_feed_description: Optional[str] = None, + timestamp_column: Optional[str] = None, + data_start_from: Optional[datetime.datetime] = None, + start_offset_in_seconds: Optional[int] = None, + max_concurrency: Optional[int] = None, + min_retry_interval_in_seconds: Optional[int] = None, + stop_retry_after_in_seconds: Optional[int] = None, + need_rollup: Optional[Union[str, "DataFeedDetailPatchNeedRollup"]] = None, + roll_up_method: Optional[Union[str, "DataFeedDetailPatchRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "DataFeedDetailPatchFillMissingPointType"]] = None, + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "DataFeedDetailPatchViewMode"]] = None, + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + status: Optional[Union[str, "DataFeedDetailPatchStatus"]] = None, + action_link_template: Optional[str] = None, + data_source_parameter: Optional["ElasticsearchParameter"] = None, + **kwargs + ): + super(ElasticsearchDataFeedPatch, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, status=status, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'Elasticsearch' # type: str + self.data_source_parameter = data_source_parameter + + +class ElasticsearchParameter(msrest.serialization.Model): + """ElasticsearchParameter. + + All required parameters must be populated in order to send to Azure. + + :param host: Required. Host. + :type host: str + :param port: Required. Port. + :type port: str + :param auth_header: Required. Authorization header. + :type auth_header: str + :param query: Required. Query. + :type query: str + """ + + _validation = { + 'host': {'required': True}, + 'port': {'required': True}, + 'auth_header': {'required': True}, + 'query': {'required': True}, + } + + _attribute_map = { + 'host': {'key': 'host', 'type': 'str'}, + 'port': {'key': 'port', 'type': 'str'}, + 'auth_header': {'key': 'authHeader', 'type': 'str'}, + 'query': {'key': 'query', 'type': 'str'}, + } + + def __init__( + self, + *, + host: str, + port: str, + auth_header: str, + query: str, + **kwargs + ): + super(ElasticsearchParameter, self).__init__(**kwargs) + self.host = host + self.port = port + self.auth_header = auth_header + self.query = query + + +class HookInfo(msrest.serialization.Model): + """HookInfo. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: EmailHookInfo, WebhookHookInfo. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param hook_type: Required. hook type.Constant filled by server. Possible values include: + "Webhook", "Email". + :type hook_type: str or ~azure.ai.metricsadvisor.models.HookType + :ivar hook_id: Hook unique id. + :vartype hook_id: str + :param hook_name: Required. hook unique name. + :type hook_name: str + :param description: hook description. + :type description: str + :param external_link: hook external link. + :type external_link: str + :ivar admins: hook administrators. + :vartype admins: list[str] + """ + + _validation = { + 'hook_type': {'required': True}, + 'hook_id': {'readonly': True}, + 'hook_name': {'required': True}, + 'admins': {'readonly': True, 'unique': True}, + } + + _attribute_map = { + 'hook_type': {'key': 'hookType', 'type': 'str'}, + 'hook_id': {'key': 'hookId', 'type': 'str'}, + 'hook_name': {'key': 'hookName', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'external_link': {'key': 'externalLink', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + } + + _subtype_map = { + 'hook_type': {'Email': 'EmailHookInfo', 'Webhook': 'WebhookHookInfo'} + } + + def __init__( + self, + *, + hook_name: str, + description: Optional[str] = None, + external_link: Optional[str] = None, + **kwargs + ): + super(HookInfo, self).__init__(**kwargs) + self.hook_type = None # type: Optional[str] + self.hook_id = None + self.hook_name = hook_name + self.description = description + self.external_link = external_link + self.admins = None + + +class EmailHookInfo(HookInfo): + """EmailHookInfo. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param hook_type: Required. hook type.Constant filled by server. Possible values include: + "Webhook", "Email". + :type hook_type: str or ~azure.ai.metricsadvisor.models.HookType + :ivar hook_id: Hook unique id. + :vartype hook_id: str + :param hook_name: Required. hook unique name. + :type hook_name: str + :param description: hook description. + :type description: str + :param external_link: hook external link. + :type external_link: str + :ivar admins: hook administrators. + :vartype admins: list[str] + :param hook_parameter: Required. + :type hook_parameter: ~azure.ai.metricsadvisor.models.EmailHookParameter + """ + + _validation = { + 'hook_type': {'required': True}, + 'hook_id': {'readonly': True}, + 'hook_name': {'required': True}, + 'admins': {'readonly': True, 'unique': True}, + 'hook_parameter': {'required': True}, + } + + _attribute_map = { + 'hook_type': {'key': 'hookType', 'type': 'str'}, + 'hook_id': {'key': 'hookId', 'type': 'str'}, + 'hook_name': {'key': 'hookName', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'external_link': {'key': 'externalLink', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'hook_parameter': {'key': 'hookParameter', 'type': 'EmailHookParameter'}, + } + + def __init__( + self, + *, + hook_name: str, + hook_parameter: "EmailHookParameter", + description: Optional[str] = None, + external_link: Optional[str] = None, + **kwargs + ): + super(EmailHookInfo, self).__init__(hook_name=hook_name, description=description, external_link=external_link, **kwargs) + self.hook_type = 'Email' # type: str + self.hook_parameter = hook_parameter + + +class HookInfoPatch(msrest.serialization.Model): + """HookInfoPatch. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: EmailHookInfoPatch, WebhookHookInfoPatch. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param hook_type: Required. hook type.Constant filled by server. Possible values include: + "Webhook", "Email". + :type hook_type: str or ~azure.ai.metricsadvisor.models.HookInfoPatchHookType + :param hook_name: hook unique name. + :type hook_name: str + :param description: hook description. + :type description: str + :param external_link: hook external link. + :type external_link: str + :ivar admins: hook administrators. + :vartype admins: list[str] + """ + + _validation = { + 'hook_type': {'required': True}, + 'admins': {'readonly': True, 'unique': True}, + } + + _attribute_map = { + 'hook_type': {'key': 'hookType', 'type': 'str'}, + 'hook_name': {'key': 'hookName', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'external_link': {'key': 'externalLink', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + } + + _subtype_map = { + 'hook_type': {'Email': 'EmailHookInfoPatch', 'Webhook': 'WebhookHookInfoPatch'} + } + + def __init__( + self, + *, + hook_name: Optional[str] = None, + description: Optional[str] = None, + external_link: Optional[str] = None, + **kwargs + ): + super(HookInfoPatch, self).__init__(**kwargs) + self.hook_type = None # type: Optional[str] + self.hook_name = hook_name + self.description = description + self.external_link = external_link + self.admins = None + + +class EmailHookInfoPatch(HookInfoPatch): + """EmailHookInfoPatch. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param hook_type: Required. hook type.Constant filled by server. Possible values include: + "Webhook", "Email". + :type hook_type: str or ~azure.ai.metricsadvisor.models.HookInfoPatchHookType + :param hook_name: hook unique name. + :type hook_name: str + :param description: hook description. + :type description: str + :param external_link: hook external link. + :type external_link: str + :ivar admins: hook administrators. + :vartype admins: list[str] + :param hook_parameter: + :type hook_parameter: ~azure.ai.metricsadvisor.models.EmailHookParameter + """ + + _validation = { + 'hook_type': {'required': True}, + 'admins': {'readonly': True, 'unique': True}, + } + + _attribute_map = { + 'hook_type': {'key': 'hookType', 'type': 'str'}, + 'hook_name': {'key': 'hookName', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'external_link': {'key': 'externalLink', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'hook_parameter': {'key': 'hookParameter', 'type': 'EmailHookParameter'}, + } + + def __init__( + self, + *, + hook_name: Optional[str] = None, + description: Optional[str] = None, + external_link: Optional[str] = None, + hook_parameter: Optional["EmailHookParameter"] = None, + **kwargs + ): + super(EmailHookInfoPatch, self).__init__(hook_name=hook_name, description=description, external_link=external_link, **kwargs) + self.hook_type = 'Email' # type: str + self.hook_parameter = hook_parameter + + +class EmailHookParameter(msrest.serialization.Model): + """EmailHookParameter. + + All required parameters must be populated in order to send to Azure. + + :param to_list: Required. Email TO: list. + :type to_list: list[str] + """ + + _validation = { + 'to_list': {'required': True, 'unique': True}, + } + + _attribute_map = { + 'to_list': {'key': 'toList', 'type': '[str]'}, + } + + def __init__( + self, + *, + to_list: List[str], + **kwargs + ): + super(EmailHookParameter, self).__init__(**kwargs) + self.to_list = to_list + + +class EnrichmentStatus(msrest.serialization.Model): + """EnrichmentStatus. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar timestamp: data slice timestamp. + :vartype timestamp: ~datetime.datetime + :ivar status: latest enrichment status for this data slice. + :vartype status: str + :ivar message: the trimmed message describes details of the enrichment status. + :vartype message: str + """ + + _validation = { + 'timestamp': {'readonly': True}, + 'status': {'readonly': True}, + 'message': {'readonly': True}, + } + + _attribute_map = { + 'timestamp': {'key': 'timestamp', 'type': 'iso-8601'}, + 'status': {'key': 'status', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(EnrichmentStatus, self).__init__(**kwargs) + self.timestamp = None + self.status = None + self.message = None + + +class EnrichmentStatusList(msrest.serialization.Model): + """EnrichmentStatusList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar next_link: + :vartype next_link: str + :ivar value: + :vartype value: list[~azure.ai.metricsadvisor.models.EnrichmentStatus] + """ + + _validation = { + 'next_link': {'readonly': True}, + 'value': {'readonly': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[EnrichmentStatus]'}, + } + + def __init__( + self, + **kwargs + ): + super(EnrichmentStatusList, self).__init__(**kwargs) + self.next_link = None + self.value = None + + +class EnrichmentStatusQueryOption(msrest.serialization.Model): + """EnrichmentStatusQueryOption. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. the start point of time range to query anomaly detection status. + :type start_time: ~datetime.datetime + :param end_time: Required. the end point of time range to query anomaly detection status. + :type end_time: ~datetime.datetime + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + } + + def __init__( + self, + *, + start_time: datetime.datetime, + end_time: datetime.datetime, + **kwargs + ): + super(EnrichmentStatusQueryOption, self).__init__(**kwargs) + self.start_time = start_time + self.end_time = end_time + + +class ErrorCode(msrest.serialization.Model): + """ErrorCode. + + :param message: + :type message: str + :param code: + :type code: str + """ + + _attribute_map = { + 'message': {'key': 'message', 'type': 'str'}, + 'code': {'key': 'code', 'type': 'str'}, + } + + def __init__( + self, + *, + message: Optional[str] = None, + code: Optional[str] = None, + **kwargs + ): + super(ErrorCode, self).__init__(**kwargs) + self.message = message + self.code = code + + +class FeedbackDimensionFilter(msrest.serialization.Model): + """FeedbackDimensionFilter. + + All required parameters must be populated in order to send to Azure. + + :param dimension: Required. metric dimension filter. + :type dimension: dict[str, str] + """ + + _validation = { + 'dimension': {'required': True}, + } + + _attribute_map = { + 'dimension': {'key': 'dimension', 'type': '{str}'}, + } + + def __init__( + self, + *, + dimension: Dict[str, str], + **kwargs + ): + super(FeedbackDimensionFilter, self).__init__(**kwargs) + self.dimension = dimension + + +class HardThresholdCondition(msrest.serialization.Model): + """HardThresholdCondition. + + All required parameters must be populated in order to send to Azure. + + :param lower_bound: lower bound + + should be specified when anomalyDetectorDirection is Both or Down. + :type lower_bound: float + :param upper_bound: upper bound + + should be specified when anomalyDetectorDirection is Both or Up. + :type upper_bound: float + :param anomaly_detector_direction: Required. detection direction. Possible values include: + "Both", "Down", "Up". + :type anomaly_detector_direction: str or + ~azure.ai.metricsadvisor.models.AnomalyDetectorDirection + :param suppress_condition: Required. + :type suppress_condition: ~azure.ai.metricsadvisor.models.SuppressCondition + """ + + _validation = { + 'anomaly_detector_direction': {'required': True}, + 'suppress_condition': {'required': True}, + } + + _attribute_map = { + 'lower_bound': {'key': 'lowerBound', 'type': 'float'}, + 'upper_bound': {'key': 'upperBound', 'type': 'float'}, + 'anomaly_detector_direction': {'key': 'anomalyDetectorDirection', 'type': 'str'}, + 'suppress_condition': {'key': 'suppressCondition', 'type': 'SuppressCondition'}, + } + + def __init__( + self, + *, + anomaly_detector_direction: Union[str, "AnomalyDetectorDirection"], + suppress_condition: "SuppressCondition", + lower_bound: Optional[float] = None, + upper_bound: Optional[float] = None, + **kwargs + ): + super(HardThresholdCondition, self).__init__(**kwargs) + self.lower_bound = lower_bound + self.upper_bound = upper_bound + self.anomaly_detector_direction = anomaly_detector_direction + self.suppress_condition = suppress_condition + + +class HookList(msrest.serialization.Model): + """HookList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar next_link: + :vartype next_link: str + :ivar value: + :vartype value: list[~azure.ai.metricsadvisor.models.HookInfo] + """ + + _validation = { + 'next_link': {'readonly': True}, + 'value': {'readonly': True, 'unique': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[HookInfo]'}, + } + + def __init__( + self, + **kwargs + ): + super(HookList, self).__init__(**kwargs) + self.next_link = None + self.value = None + + +class HttpRequestDataFeed(DataFeedDetail): + """HttpRequestDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.HttpRequestParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'HttpRequestParameter'}, + } + + def __init__( + self, + *, + data_feed_name: str, + granularity_name: Union[str, "Granularity"], + metrics: List["Metric"], + data_start_from: datetime.datetime, + data_source_parameter: "HttpRequestParameter", + data_feed_description: Optional[str] = None, + granularity_amount: Optional[int] = None, + dimension: Optional[List["Dimension"]] = None, + timestamp_column: Optional[str] = None, + start_offset_in_seconds: Optional[int] = 0, + max_concurrency: Optional[int] = -1, + min_retry_interval_in_seconds: Optional[int] = -1, + stop_retry_after_in_seconds: Optional[int] = -1, + need_rollup: Optional[Union[str, "NeedRollupEnum"]] = "NeedRollup", + roll_up_method: Optional[Union[str, "DataFeedDetailRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "FillMissingPointType"]] = "SmartFilling", + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "ViewMode"]] = "Private", + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + action_link_template: Optional[str] = None, + **kwargs + ): + super(HttpRequestDataFeed, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, granularity_name=granularity_name, granularity_amount=granularity_amount, metrics=metrics, dimension=dimension, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'HttpRequest' # type: str + self.data_source_parameter = data_source_parameter + + +class HttpRequestDataFeedPatch(DataFeedDetailPatch): + """HttpRequestDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.HttpRequestParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'HttpRequestParameter'}, + } + + def __init__( + self, + *, + data_feed_name: Optional[str] = None, + data_feed_description: Optional[str] = None, + timestamp_column: Optional[str] = None, + data_start_from: Optional[datetime.datetime] = None, + start_offset_in_seconds: Optional[int] = None, + max_concurrency: Optional[int] = None, + min_retry_interval_in_seconds: Optional[int] = None, + stop_retry_after_in_seconds: Optional[int] = None, + need_rollup: Optional[Union[str, "DataFeedDetailPatchNeedRollup"]] = None, + roll_up_method: Optional[Union[str, "DataFeedDetailPatchRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "DataFeedDetailPatchFillMissingPointType"]] = None, + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "DataFeedDetailPatchViewMode"]] = None, + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + status: Optional[Union[str, "DataFeedDetailPatchStatus"]] = None, + action_link_template: Optional[str] = None, + data_source_parameter: Optional["HttpRequestParameter"] = None, + **kwargs + ): + super(HttpRequestDataFeedPatch, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, status=status, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'HttpRequest' # type: str + self.data_source_parameter = data_source_parameter + + +class HttpRequestParameter(msrest.serialization.Model): + """HttpRequestParameter. + + All required parameters must be populated in order to send to Azure. + + :param url: Required. HTTP URL. + :type url: str + :param http_header: Required. HTTP header. + :type http_header: str + :param http_method: Required. HTTP method. + :type http_method: str + :param payload: Required. HTTP reuqest body. + :type payload: str + """ + + _validation = { + 'url': {'required': True}, + 'http_header': {'required': True}, + 'http_method': {'required': True}, + 'payload': {'required': True}, + } + + _attribute_map = { + 'url': {'key': 'url', 'type': 'str'}, + 'http_header': {'key': 'httpHeader', 'type': 'str'}, + 'http_method': {'key': 'httpMethod', 'type': 'str'}, + 'payload': {'key': 'payload', 'type': 'str'}, + } + + def __init__( + self, + *, + url: str, + http_header: str, + http_method: str, + payload: str, + **kwargs + ): + super(HttpRequestParameter, self).__init__(**kwargs) + self.url = url + self.http_header = http_header + self.http_method = http_method + self.payload = payload + + +class IncidentProperty(msrest.serialization.Model): + """IncidentProperty. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param max_severity: Required. max severity of latest anomalies in the incident. Possible + values include: "Low", "Medium", "High". + :type max_severity: str or ~azure.ai.metricsadvisor.models.Severity + :ivar incident_status: incident status + + only return for alerting incident result. Possible values include: "Active", "Resolved". + :vartype incident_status: str or ~azure.ai.metricsadvisor.models.IncidentPropertyIncidentStatus + """ + + _validation = { + 'max_severity': {'required': True}, + 'incident_status': {'readonly': True}, + } + + _attribute_map = { + 'max_severity': {'key': 'maxSeverity', 'type': 'str'}, + 'incident_status': {'key': 'incidentStatus', 'type': 'str'}, + } + + def __init__( + self, + *, + max_severity: Union[str, "Severity"], + **kwargs + ): + super(IncidentProperty, self).__init__(**kwargs) + self.max_severity = max_severity + self.incident_status = None + + +class IncidentResult(msrest.serialization.Model): + """IncidentResult. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar metric_id: metric unique id + + only return for alerting incident result. + :vartype metric_id: str + :ivar anomaly_detection_configuration_id: anomaly detection configuration unique id + + only return for alerting incident result. + :vartype anomaly_detection_configuration_id: str + :param incident_id: Required. incident id. + :type incident_id: str + :param start_time: Required. incident start time. + :type start_time: ~datetime.datetime + :param last_time: Required. incident last time. + :type last_time: ~datetime.datetime + :param root_node: Required. + :type root_node: ~azure.ai.metricsadvisor.models.SeriesIdentity + :param property: Required. + :type property: ~azure.ai.metricsadvisor.models.IncidentProperty + """ + + _validation = { + 'metric_id': {'readonly': True}, + 'anomaly_detection_configuration_id': {'readonly': True}, + 'incident_id': {'required': True}, + 'start_time': {'required': True}, + 'last_time': {'required': True}, + 'root_node': {'required': True}, + 'property': {'required': True}, + } + + _attribute_map = { + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'anomaly_detection_configuration_id': {'key': 'anomalyDetectionConfigurationId', 'type': 'str'}, + 'incident_id': {'key': 'incidentId', 'type': 'str'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'last_time': {'key': 'lastTime', 'type': 'iso-8601'}, + 'root_node': {'key': 'rootNode', 'type': 'SeriesIdentity'}, + 'property': {'key': 'property', 'type': 'IncidentProperty'}, + } + + def __init__( + self, + *, + incident_id: str, + start_time: datetime.datetime, + last_time: datetime.datetime, + root_node: "SeriesIdentity", + property: "IncidentProperty", + **kwargs + ): + super(IncidentResult, self).__init__(**kwargs) + self.metric_id = None + self.anomaly_detection_configuration_id = None + self.incident_id = incident_id + self.start_time = start_time + self.last_time = last_time + self.root_node = root_node + self.property = property + + +class IncidentResultList(msrest.serialization.Model): + """IncidentResultList. + + All required parameters must be populated in order to send to Azure. + + :param next_link: Required. + :type next_link: str + :param value: Required. + :type value: list[~azure.ai.metricsadvisor.models.IncidentResult] + """ + + _validation = { + 'next_link': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[IncidentResult]'}, + } + + def __init__( + self, + *, + next_link: str, + value: List["IncidentResult"], + **kwargs + ): + super(IncidentResultList, self).__init__(**kwargs) + self.next_link = next_link + self.value = value + + +class InfluxDBDataFeed(DataFeedDetail): + """InfluxDBDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.InfluxDBParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'InfluxDBParameter'}, + } + + def __init__( + self, + *, + data_feed_name: str, + granularity_name: Union[str, "Granularity"], + metrics: List["Metric"], + data_start_from: datetime.datetime, + data_source_parameter: "InfluxDBParameter", + data_feed_description: Optional[str] = None, + granularity_amount: Optional[int] = None, + dimension: Optional[List["Dimension"]] = None, + timestamp_column: Optional[str] = None, + start_offset_in_seconds: Optional[int] = 0, + max_concurrency: Optional[int] = -1, + min_retry_interval_in_seconds: Optional[int] = -1, + stop_retry_after_in_seconds: Optional[int] = -1, + need_rollup: Optional[Union[str, "NeedRollupEnum"]] = "NeedRollup", + roll_up_method: Optional[Union[str, "DataFeedDetailRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "FillMissingPointType"]] = "SmartFilling", + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "ViewMode"]] = "Private", + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + action_link_template: Optional[str] = None, + **kwargs + ): + super(InfluxDBDataFeed, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, granularity_name=granularity_name, granularity_amount=granularity_amount, metrics=metrics, dimension=dimension, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'InfluxDB' # type: str + self.data_source_parameter = data_source_parameter + + +class InfluxDBDataFeedPatch(DataFeedDetailPatch): + """InfluxDBDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.InfluxDBParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'InfluxDBParameter'}, + } + + def __init__( + self, + *, + data_feed_name: Optional[str] = None, + data_feed_description: Optional[str] = None, + timestamp_column: Optional[str] = None, + data_start_from: Optional[datetime.datetime] = None, + start_offset_in_seconds: Optional[int] = None, + max_concurrency: Optional[int] = None, + min_retry_interval_in_seconds: Optional[int] = None, + stop_retry_after_in_seconds: Optional[int] = None, + need_rollup: Optional[Union[str, "DataFeedDetailPatchNeedRollup"]] = None, + roll_up_method: Optional[Union[str, "DataFeedDetailPatchRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "DataFeedDetailPatchFillMissingPointType"]] = None, + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "DataFeedDetailPatchViewMode"]] = None, + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + status: Optional[Union[str, "DataFeedDetailPatchStatus"]] = None, + action_link_template: Optional[str] = None, + data_source_parameter: Optional["InfluxDBParameter"] = None, + **kwargs + ): + super(InfluxDBDataFeedPatch, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, status=status, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'InfluxDB' # type: str + self.data_source_parameter = data_source_parameter + + +class InfluxDBParameter(msrest.serialization.Model): + """InfluxDBParameter. + + All required parameters must be populated in order to send to Azure. + + :param connection_string: Required. InfluxDB connection string. + :type connection_string: str + :param database: Required. Database name. + :type database: str + :param user_name: Required. Database access user. + :type user_name: str + :param password: Required. Database access password. + :type password: str + :param query: Required. Query script. + :type query: str + """ + + _validation = { + 'connection_string': {'required': True}, + 'database': {'required': True}, + 'user_name': {'required': True}, + 'password': {'required': True}, + 'query': {'required': True}, + } + + _attribute_map = { + 'connection_string': {'key': 'connectionString', 'type': 'str'}, + 'database': {'key': 'database', 'type': 'str'}, + 'user_name': {'key': 'userName', 'type': 'str'}, + 'password': {'key': 'password', 'type': 'str'}, + 'query': {'key': 'query', 'type': 'str'}, + } + + def __init__( + self, + *, + connection_string: str, + database: str, + user_name: str, + password: str, + query: str, + **kwargs + ): + super(InfluxDBParameter, self).__init__(**kwargs) + self.connection_string = connection_string + self.database = database + self.user_name = user_name + self.password = password + self.query = query + + +class IngestionProgressResetOptions(msrest.serialization.Model): + """IngestionProgressResetOptions. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. the start point of time range to reset data ingestion status. + :type start_time: ~datetime.datetime + :param end_time: Required. the end point of time range to reset data ingestion status. + :type end_time: ~datetime.datetime + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + } + + def __init__( + self, + *, + start_time: datetime.datetime, + end_time: datetime.datetime, + **kwargs + ): + super(IngestionProgressResetOptions, self).__init__(**kwargs) + self.start_time = start_time + self.end_time = end_time + + +class IngestionStatus(msrest.serialization.Model): + """IngestionStatus. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar timestamp: data slice timestamp. + :vartype timestamp: ~datetime.datetime + :ivar status: latest ingestion task status for this data slice. Possible values include: + "NotStarted", "Scheduled", "Running", "Succeeded", "Failed", "NoData", "Error", "Paused". + :vartype status: str or ~azure.ai.metricsadvisor.models.IngestionStatusType + :ivar message: the trimmed message of last ingestion job. + :vartype message: str + """ + + _validation = { + 'timestamp': {'readonly': True}, + 'status': {'readonly': True}, + 'message': {'readonly': True}, + } + + _attribute_map = { + 'timestamp': {'key': 'timestamp', 'type': 'iso-8601'}, + 'status': {'key': 'status', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(IngestionStatus, self).__init__(**kwargs) + self.timestamp = None + self.status = None + self.message = None + + +class IngestionStatusList(msrest.serialization.Model): + """IngestionStatusList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar next_link: + :vartype next_link: str + :ivar value: + :vartype value: list[~azure.ai.metricsadvisor.models.IngestionStatus] + """ + + _validation = { + 'next_link': {'readonly': True}, + 'value': {'readonly': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[IngestionStatus]'}, + } + + def __init__( + self, + **kwargs + ): + super(IngestionStatusList, self).__init__(**kwargs) + self.next_link = None + self.value = None + + +class IngestionStatusQueryOptions(msrest.serialization.Model): + """IngestionStatusQueryOptions. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. the start point of time range to query data ingestion status. + :type start_time: ~datetime.datetime + :param end_time: Required. the end point of time range to query data ingestion status. + :type end_time: ~datetime.datetime + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + } + + def __init__( + self, + *, + start_time: datetime.datetime, + end_time: datetime.datetime, + **kwargs + ): + super(IngestionStatusQueryOptions, self).__init__(**kwargs) + self.start_time = start_time + self.end_time = end_time + + +class Metric(msrest.serialization.Model): + """Metric. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar metric_id: metric id. + :vartype metric_id: str + :param metric_name: Required. metric name. + :type metric_name: str + :param metric_display_name: metric display name. + :type metric_display_name: str + :param metric_description: metric description. + :type metric_description: str + """ + + _validation = { + 'metric_id': {'readonly': True}, + 'metric_name': {'required': True}, + 'metric_display_name': {'pattern': r'[.a-zA-Z0-9_-]+'}, + } + + _attribute_map = { + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'metric_name': {'key': 'metricName', 'type': 'str'}, + 'metric_display_name': {'key': 'metricDisplayName', 'type': 'str'}, + 'metric_description': {'key': 'metricDescription', 'type': 'str'}, + } + + def __init__( + self, + *, + metric_name: str, + metric_display_name: Optional[str] = None, + metric_description: Optional[str] = None, + **kwargs + ): + super(Metric, self).__init__(**kwargs) + self.metric_id = None + self.metric_name = metric_name + self.metric_display_name = metric_display_name + self.metric_description = metric_description + + +class MetricAlertingConfiguration(msrest.serialization.Model): + """MetricAlertingConfiguration. + + All required parameters must be populated in order to send to Azure. + + :param anomaly_detection_configuration_id: Required. Anomaly detection configuration unique id. + :type anomaly_detection_configuration_id: str + :param anomaly_scope_type: Required. Anomaly scope. Possible values include: "All", + "Dimension", "TopN". + :type anomaly_scope_type: str or ~azure.ai.metricsadvisor.models.AnomalyScope + :param negation_operation: Negation operation. + :type negation_operation: bool + :param dimension_anomaly_scope: + :type dimension_anomaly_scope: ~azure.ai.metricsadvisor.models.DimensionGroupIdentity + :param top_n_anomaly_scope: + :type top_n_anomaly_scope: ~azure.ai.metricsadvisor.models.TopNGroupScope + :param severity_filter: + :type severity_filter: ~azure.ai.metricsadvisor.models.SeverityCondition + :param snooze_filter: + :type snooze_filter: ~azure.ai.metricsadvisor.models.AlertSnoozeCondition + :param value_filter: + :type value_filter: ~azure.ai.metricsadvisor.models.ValueCondition + """ + + _validation = { + 'anomaly_detection_configuration_id': {'required': True}, + 'anomaly_scope_type': {'required': True}, + } + + _attribute_map = { + 'anomaly_detection_configuration_id': {'key': 'anomalyDetectionConfigurationId', 'type': 'str'}, + 'anomaly_scope_type': {'key': 'anomalyScopeType', 'type': 'str'}, + 'negation_operation': {'key': 'negationOperation', 'type': 'bool'}, + 'dimension_anomaly_scope': {'key': 'dimensionAnomalyScope', 'type': 'DimensionGroupIdentity'}, + 'top_n_anomaly_scope': {'key': 'topNAnomalyScope', 'type': 'TopNGroupScope'}, + 'severity_filter': {'key': 'severityFilter', 'type': 'SeverityCondition'}, + 'snooze_filter': {'key': 'snoozeFilter', 'type': 'AlertSnoozeCondition'}, + 'value_filter': {'key': 'valueFilter', 'type': 'ValueCondition'}, + } + + def __init__( + self, + *, + anomaly_detection_configuration_id: str, + anomaly_scope_type: Union[str, "AnomalyScope"], + negation_operation: Optional[bool] = None, + dimension_anomaly_scope: Optional["DimensionGroupIdentity"] = None, + top_n_anomaly_scope: Optional["TopNGroupScope"] = None, + severity_filter: Optional["SeverityCondition"] = None, + snooze_filter: Optional["AlertSnoozeCondition"] = None, + value_filter: Optional["ValueCondition"] = None, + **kwargs + ): + super(MetricAlertingConfiguration, self).__init__(**kwargs) + self.anomaly_detection_configuration_id = anomaly_detection_configuration_id + self.anomaly_scope_type = anomaly_scope_type + self.negation_operation = negation_operation + self.dimension_anomaly_scope = dimension_anomaly_scope + self.top_n_anomaly_scope = top_n_anomaly_scope + self.severity_filter = severity_filter + self.snooze_filter = snooze_filter + self.value_filter = value_filter + + +class MetricDataItem(msrest.serialization.Model): + """MetricDataItem. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param id: + :type id: ~azure.ai.metricsadvisor.models.MetricSeriesItem + :ivar timestamp_list: timestamps of the data related to this time series. + :vartype timestamp_list: list[~datetime.datetime] + :ivar value_list: values of the data related to this time series. + :vartype value_list: list[float] + """ + + _validation = { + 'timestamp_list': {'readonly': True}, + 'value_list': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'MetricSeriesItem'}, + 'timestamp_list': {'key': 'timestampList', 'type': '[iso-8601]'}, + 'value_list': {'key': 'valueList', 'type': '[float]'}, + } + + def __init__( + self, + *, + id: Optional["MetricSeriesItem"] = None, + **kwargs + ): + super(MetricDataItem, self).__init__(**kwargs) + self.id = id + self.timestamp_list = None + self.value_list = None + + +class MetricDataList(msrest.serialization.Model): + """MetricDataList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: + :vartype value: list[~azure.ai.metricsadvisor.models.MetricDataItem] + """ + + _validation = { + 'value': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[MetricDataItem]'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricDataList, self).__init__(**kwargs) + self.value = None + + +class MetricDataQueryOptions(msrest.serialization.Model): + """MetricDataQueryOptions. + + All required parameters must be populated in order to send to Azure. + + :param start_time: Required. start time of query a time series data, and format should be yyyy- + MM-ddThh:mm:ssZ. + :type start_time: ~datetime.datetime + :param end_time: Required. start time of query a time series data, and format should be yyyy- + MM-ddThh:mm:ssZ. + :type end_time: ~datetime.datetime + :param series: Required. query specific series. + :type series: list[dict[str, str]] + """ + + _validation = { + 'start_time': {'required': True}, + 'end_time': {'required': True}, + 'series': {'required': True}, + } + + _attribute_map = { + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'series': {'key': 'series', 'type': '[{str}]'}, + } + + def __init__( + self, + *, + start_time: datetime.datetime, + end_time: datetime.datetime, + series: List[Dict[str, str]], + **kwargs + ): + super(MetricDataQueryOptions, self).__init__(**kwargs) + self.start_time = start_time + self.end_time = end_time + self.series = series + + +class MetricDimensionList(msrest.serialization.Model): + """MetricDimensionList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar next_link: + :vartype next_link: str + :ivar value: + :vartype value: list[str] + """ + + _validation = { + 'next_link': {'readonly': True}, + 'value': {'readonly': True, 'unique': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[str]'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricDimensionList, self).__init__(**kwargs) + self.next_link = None + self.value = None + + +class MetricDimensionQueryOptions(msrest.serialization.Model): + """MetricDimensionQueryOptions. + + All required parameters must be populated in order to send to Azure. + + :param dimension_name: Required. dimension name. + :type dimension_name: str + :param dimension_value_filter: dimension value to be filtered. + :type dimension_value_filter: str + """ + + _validation = { + 'dimension_name': {'required': True}, + } + + _attribute_map = { + 'dimension_name': {'key': 'dimensionName', 'type': 'str'}, + 'dimension_value_filter': {'key': 'dimensionValueFilter', 'type': 'str'}, + } + + def __init__( + self, + *, + dimension_name: str, + dimension_value_filter: Optional[str] = None, + **kwargs + ): + super(MetricDimensionQueryOptions, self).__init__(**kwargs) + self.dimension_name = dimension_name + self.dimension_value_filter = dimension_value_filter + + +class MetricFeedbackFilter(msrest.serialization.Model): + """MetricFeedbackFilter. + + All required parameters must be populated in order to send to Azure. + + :param metric_id: Required. filter feedbacks by metric id. + :type metric_id: str + :param dimension_filter: + :type dimension_filter: ~azure.ai.metricsadvisor.models.FeedbackDimensionFilter + :param feedback_type: filter feedbacks by type. Possible values include: "Anomaly", + "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :param start_time: start time filter under chosen time mode. + :type start_time: ~datetime.datetime + :param end_time: end time filter under chosen time mode. + :type end_time: ~datetime.datetime + :param time_mode: time mode to filter feedback. Possible values include: "MetricTimestamp", + "FeedbackCreatedTime". + :type time_mode: str or ~azure.ai.metricsadvisor.models.FeedbackQueryTimeMode + """ + + _validation = { + 'metric_id': {'required': True}, + } + + _attribute_map = { + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': 'FeedbackDimensionFilter'}, + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'time_mode': {'key': 'timeMode', 'type': 'str'}, + } + + def __init__( + self, + *, + metric_id: str, + dimension_filter: Optional["FeedbackDimensionFilter"] = None, + feedback_type: Optional[Union[str, "FeedbackType"]] = None, + start_time: Optional[datetime.datetime] = None, + end_time: Optional[datetime.datetime] = None, + time_mode: Optional[Union[str, "FeedbackQueryTimeMode"]] = None, + **kwargs + ): + super(MetricFeedbackFilter, self).__init__(**kwargs) + self.metric_id = metric_id + self.dimension_filter = dimension_filter + self.feedback_type = feedback_type + self.start_time = start_time + self.end_time = end_time + self.time_mode = time_mode + + +class MetricFeedbackList(msrest.serialization.Model): + """MetricFeedbackList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar next_link: + :vartype next_link: str + :ivar value: + :vartype value: list[~azure.ai.metricsadvisor.models.MetricFeedback] + """ + + _validation = { + 'next_link': {'readonly': True}, + 'value': {'readonly': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[MetricFeedback]'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricFeedbackList, self).__init__(**kwargs) + self.next_link = None + self.value = None + + +class MetricSeriesItem(msrest.serialization.Model): + """MetricSeriesItem. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar metric_id: metric unique id. + :vartype metric_id: str + :ivar dimension: dimension name and value pair. + :vartype dimension: dict[str, str] + """ + + _validation = { + 'metric_id': {'readonly': True}, + 'dimension': {'readonly': True}, + } + + _attribute_map = { + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension': {'key': 'dimension', 'type': '{str}'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricSeriesItem, self).__init__(**kwargs) + self.metric_id = None + self.dimension = None + + +class MetricSeriesList(msrest.serialization.Model): + """MetricSeriesList. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar next_link: + :vartype next_link: str + :ivar value: + :vartype value: list[~azure.ai.metricsadvisor.models.MetricSeriesItem] + """ + + _validation = { + 'next_link': {'readonly': True}, + 'value': {'readonly': True}, + } + + _attribute_map = { + 'next_link': {'key': '@nextLink', 'type': 'str'}, + 'value': {'key': 'value', 'type': '[MetricSeriesItem]'}, + } + + def __init__( + self, + **kwargs + ): + super(MetricSeriesList, self).__init__(**kwargs) + self.next_link = None + self.value = None + + +class MetricSeriesQueryOptions(msrest.serialization.Model): + """MetricSeriesQueryOptions. + + All required parameters must be populated in order to send to Azure. + + :param active_since: Required. query series ingested after this time, the format should be + yyyy-MM-ddTHH:mm:ssZ. + :type active_since: ~datetime.datetime + :param dimension_filter: filter specfic dimension name and values. + :type dimension_filter: dict[str, list[str]] + """ + + _validation = { + 'active_since': {'required': True}, + } + + _attribute_map = { + 'active_since': {'key': 'activeSince', 'type': 'iso-8601'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': '{[str]}'}, + } + + def __init__( + self, + *, + active_since: datetime.datetime, + dimension_filter: Optional[Dict[str, List[str]]] = None, + **kwargs + ): + super(MetricSeriesQueryOptions, self).__init__(**kwargs) + self.active_since = active_since + self.dimension_filter = dimension_filter + + +class MongoDBDataFeed(DataFeedDetail): + """MongoDBDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.MongoDBParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'MongoDBParameter'}, + } + + def __init__( + self, + *, + data_feed_name: str, + granularity_name: Union[str, "Granularity"], + metrics: List["Metric"], + data_start_from: datetime.datetime, + data_source_parameter: "MongoDBParameter", + data_feed_description: Optional[str] = None, + granularity_amount: Optional[int] = None, + dimension: Optional[List["Dimension"]] = None, + timestamp_column: Optional[str] = None, + start_offset_in_seconds: Optional[int] = 0, + max_concurrency: Optional[int] = -1, + min_retry_interval_in_seconds: Optional[int] = -1, + stop_retry_after_in_seconds: Optional[int] = -1, + need_rollup: Optional[Union[str, "NeedRollupEnum"]] = "NeedRollup", + roll_up_method: Optional[Union[str, "DataFeedDetailRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "FillMissingPointType"]] = "SmartFilling", + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "ViewMode"]] = "Private", + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + action_link_template: Optional[str] = None, + **kwargs + ): + super(MongoDBDataFeed, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, granularity_name=granularity_name, granularity_amount=granularity_amount, metrics=metrics, dimension=dimension, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'MongoDB' # type: str + self.data_source_parameter = data_source_parameter + + +class MongoDBDataFeedPatch(DataFeedDetailPatch): + """MongoDBDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.MongoDBParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'MongoDBParameter'}, + } + + def __init__( + self, + *, + data_feed_name: Optional[str] = None, + data_feed_description: Optional[str] = None, + timestamp_column: Optional[str] = None, + data_start_from: Optional[datetime.datetime] = None, + start_offset_in_seconds: Optional[int] = None, + max_concurrency: Optional[int] = None, + min_retry_interval_in_seconds: Optional[int] = None, + stop_retry_after_in_seconds: Optional[int] = None, + need_rollup: Optional[Union[str, "DataFeedDetailPatchNeedRollup"]] = None, + roll_up_method: Optional[Union[str, "DataFeedDetailPatchRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "DataFeedDetailPatchFillMissingPointType"]] = None, + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "DataFeedDetailPatchViewMode"]] = None, + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + status: Optional[Union[str, "DataFeedDetailPatchStatus"]] = None, + action_link_template: Optional[str] = None, + data_source_parameter: Optional["MongoDBParameter"] = None, + **kwargs + ): + super(MongoDBDataFeedPatch, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, status=status, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'MongoDB' # type: str + self.data_source_parameter = data_source_parameter + + +class MongoDBParameter(msrest.serialization.Model): + """MongoDBParameter. + + All required parameters must be populated in order to send to Azure. + + :param connection_string: Required. MongoDB connection string. + :type connection_string: str + :param database: Required. Database name. + :type database: str + :param command: Required. Query script. + :type command: str + """ + + _validation = { + 'connection_string': {'required': True}, + 'database': {'required': True}, + 'command': {'required': True}, + } + + _attribute_map = { + 'connection_string': {'key': 'connectionString', 'type': 'str'}, + 'database': {'key': 'database', 'type': 'str'}, + 'command': {'key': 'command', 'type': 'str'}, + } + + def __init__( + self, + *, + connection_string: str, + database: str, + command: str, + **kwargs + ): + super(MongoDBParameter, self).__init__(**kwargs) + self.connection_string = connection_string + self.database = database + self.command = command + + +class MySqlDataFeed(DataFeedDetail): + """MySqlDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + *, + data_feed_name: str, + granularity_name: Union[str, "Granularity"], + metrics: List["Metric"], + data_start_from: datetime.datetime, + data_source_parameter: "SqlSourceParameter", + data_feed_description: Optional[str] = None, + granularity_amount: Optional[int] = None, + dimension: Optional[List["Dimension"]] = None, + timestamp_column: Optional[str] = None, + start_offset_in_seconds: Optional[int] = 0, + max_concurrency: Optional[int] = -1, + min_retry_interval_in_seconds: Optional[int] = -1, + stop_retry_after_in_seconds: Optional[int] = -1, + need_rollup: Optional[Union[str, "NeedRollupEnum"]] = "NeedRollup", + roll_up_method: Optional[Union[str, "DataFeedDetailRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "FillMissingPointType"]] = "SmartFilling", + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "ViewMode"]] = "Private", + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + action_link_template: Optional[str] = None, + **kwargs + ): + super(MySqlDataFeed, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, granularity_name=granularity_name, granularity_amount=granularity_amount, metrics=metrics, dimension=dimension, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'MySql' # type: str + self.data_source_parameter = data_source_parameter + + +class MySqlDataFeedPatch(DataFeedDetailPatch): + """MySqlDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + *, + data_feed_name: Optional[str] = None, + data_feed_description: Optional[str] = None, + timestamp_column: Optional[str] = None, + data_start_from: Optional[datetime.datetime] = None, + start_offset_in_seconds: Optional[int] = None, + max_concurrency: Optional[int] = None, + min_retry_interval_in_seconds: Optional[int] = None, + stop_retry_after_in_seconds: Optional[int] = None, + need_rollup: Optional[Union[str, "DataFeedDetailPatchNeedRollup"]] = None, + roll_up_method: Optional[Union[str, "DataFeedDetailPatchRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "DataFeedDetailPatchFillMissingPointType"]] = None, + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "DataFeedDetailPatchViewMode"]] = None, + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + status: Optional[Union[str, "DataFeedDetailPatchStatus"]] = None, + action_link_template: Optional[str] = None, + data_source_parameter: Optional["SqlSourceParameter"] = None, + **kwargs + ): + super(MySqlDataFeedPatch, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, status=status, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'MySql' # type: str + self.data_source_parameter = data_source_parameter + + +class PeriodFeedback(MetricFeedback): + """PeriodFeedback. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param feedback_type: Required. feedback type.Constant filled by server. Possible values + include: "Anomaly", "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :ivar feedback_id: feedback unique id. + :vartype feedback_id: str + :ivar created_time: feedback created time. + :vartype created_time: ~datetime.datetime + :ivar user_principal: user who gives this feedback. + :vartype user_principal: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param dimension_filter: Required. + :type dimension_filter: ~azure.ai.metricsadvisor.models.FeedbackDimensionFilter + :param value: Required. + :type value: ~azure.ai.metricsadvisor.models.PeriodFeedbackValue + """ + + _validation = { + 'feedback_type': {'required': True}, + 'feedback_id': {'readonly': True}, + 'created_time': {'readonly': True}, + 'user_principal': {'readonly': True}, + 'metric_id': {'required': True}, + 'dimension_filter': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'feedback_id': {'key': 'feedbackId', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'user_principal': {'key': 'userPrincipal', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_filter': {'key': 'dimensionFilter', 'type': 'FeedbackDimensionFilter'}, + 'value': {'key': 'value', 'type': 'PeriodFeedbackValue'}, + } + + def __init__( + self, + *, + metric_id: str, + dimension_filter: "FeedbackDimensionFilter", + value: "PeriodFeedbackValue", + **kwargs + ): + super(PeriodFeedback, self).__init__(metric_id=metric_id, dimension_filter=dimension_filter, **kwargs) + self.feedback_type = 'Period' # type: str + self.value = value + + +class PeriodFeedbackValue(msrest.serialization.Model): + """PeriodFeedbackValue. + + All required parameters must be populated in order to send to Azure. + + :param period_type: Required. the type of setting period. Possible values include: + "AutoDetect", "AssignValue". + :type period_type: str or ~azure.ai.metricsadvisor.models.PeriodType + :param period_value: Required. the number of intervals a period contains, when no period set to + 0. + :type period_value: int + """ + + _validation = { + 'period_type': {'required': True}, + 'period_value': {'required': True}, + } + + _attribute_map = { + 'period_type': {'key': 'periodType', 'type': 'str'}, + 'period_value': {'key': 'periodValue', 'type': 'int'}, + } + + def __init__( + self, + *, + period_type: Union[str, "PeriodType"], + period_value: int, + **kwargs + ): + super(PeriodFeedbackValue, self).__init__(**kwargs) + self.period_type = period_type + self.period_value = period_value + + +class PostgreSqlDataFeed(DataFeedDetail): + """PostgreSqlDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + *, + data_feed_name: str, + granularity_name: Union[str, "Granularity"], + metrics: List["Metric"], + data_start_from: datetime.datetime, + data_source_parameter: "SqlSourceParameter", + data_feed_description: Optional[str] = None, + granularity_amount: Optional[int] = None, + dimension: Optional[List["Dimension"]] = None, + timestamp_column: Optional[str] = None, + start_offset_in_seconds: Optional[int] = 0, + max_concurrency: Optional[int] = -1, + min_retry_interval_in_seconds: Optional[int] = -1, + stop_retry_after_in_seconds: Optional[int] = -1, + need_rollup: Optional[Union[str, "NeedRollupEnum"]] = "NeedRollup", + roll_up_method: Optional[Union[str, "DataFeedDetailRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "FillMissingPointType"]] = "SmartFilling", + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "ViewMode"]] = "Private", + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + action_link_template: Optional[str] = None, + **kwargs + ): + super(PostgreSqlDataFeed, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, granularity_name=granularity_name, granularity_amount=granularity_amount, metrics=metrics, dimension=dimension, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'PostgreSql' # type: str + self.data_source_parameter = data_source_parameter + + +class PostgreSqlDataFeedPatch(DataFeedDetailPatch): + """PostgreSqlDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + *, + data_feed_name: Optional[str] = None, + data_feed_description: Optional[str] = None, + timestamp_column: Optional[str] = None, + data_start_from: Optional[datetime.datetime] = None, + start_offset_in_seconds: Optional[int] = None, + max_concurrency: Optional[int] = None, + min_retry_interval_in_seconds: Optional[int] = None, + stop_retry_after_in_seconds: Optional[int] = None, + need_rollup: Optional[Union[str, "DataFeedDetailPatchNeedRollup"]] = None, + roll_up_method: Optional[Union[str, "DataFeedDetailPatchRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "DataFeedDetailPatchFillMissingPointType"]] = None, + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "DataFeedDetailPatchViewMode"]] = None, + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + status: Optional[Union[str, "DataFeedDetailPatchStatus"]] = None, + action_link_template: Optional[str] = None, + data_source_parameter: Optional["SqlSourceParameter"] = None, + **kwargs + ): + super(PostgreSqlDataFeedPatch, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, status=status, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'PostgreSql' # type: str + self.data_source_parameter = data_source_parameter + + +class RootCause(msrest.serialization.Model): + """RootCause. + + All required parameters must be populated in order to send to Azure. + + :param root_cause: Required. + :type root_cause: ~azure.ai.metricsadvisor.models.DimensionGroupIdentity + :param path: Required. drilling down path from query anomaly to root cause. + :type path: list[str] + :param score: Required. score. + :type score: float + :param description: Required. description. + :type description: str + """ + + _validation = { + 'root_cause': {'required': True}, + 'path': {'required': True}, + 'score': {'required': True}, + 'description': {'required': True}, + } + + _attribute_map = { + 'root_cause': {'key': 'rootCause', 'type': 'DimensionGroupIdentity'}, + 'path': {'key': 'path', 'type': '[str]'}, + 'score': {'key': 'score', 'type': 'float'}, + 'description': {'key': 'description', 'type': 'str'}, + } + + def __init__( + self, + *, + root_cause: "DimensionGroupIdentity", + path: List[str], + score: float, + description: str, + **kwargs + ): + super(RootCause, self).__init__(**kwargs) + self.root_cause = root_cause + self.path = path + self.score = score + self.description = description + + +class RootCauseList(msrest.serialization.Model): + """RootCauseList. + + All required parameters must be populated in order to send to Azure. + + :param value: Required. + :type value: list[~azure.ai.metricsadvisor.models.RootCause] + """ + + _validation = { + 'value': {'required': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[RootCause]'}, + } + + def __init__( + self, + *, + value: List["RootCause"], + **kwargs + ): + super(RootCauseList, self).__init__(**kwargs) + self.value = value + + +class SeriesConfiguration(msrest.serialization.Model): + """SeriesConfiguration. + + All required parameters must be populated in order to send to Azure. + + :param series: Required. + :type series: ~azure.ai.metricsadvisor.models.SeriesIdentity + :param condition_operator: condition operator + + should be specified when combining multiple detection conditions. Possible values include: + "AND", "OR". + :type condition_operator: str or + ~azure.ai.metricsadvisor.models.SeriesConfigurationConditionOperator + :param smart_detection_condition: + :type smart_detection_condition: ~azure.ai.metricsadvisor.models.SmartDetectionCondition + :param hard_threshold_condition: + :type hard_threshold_condition: ~azure.ai.metricsadvisor.models.HardThresholdCondition + :param change_threshold_condition: + :type change_threshold_condition: ~azure.ai.metricsadvisor.models.ChangeThresholdCondition + """ + + _validation = { + 'series': {'required': True}, + } + + _attribute_map = { + 'series': {'key': 'series', 'type': 'SeriesIdentity'}, + 'condition_operator': {'key': 'conditionOperator', 'type': 'str'}, + 'smart_detection_condition': {'key': 'smartDetectionCondition', 'type': 'SmartDetectionCondition'}, + 'hard_threshold_condition': {'key': 'hardThresholdCondition', 'type': 'HardThresholdCondition'}, + 'change_threshold_condition': {'key': 'changeThresholdCondition', 'type': 'ChangeThresholdCondition'}, + } + + def __init__( + self, + *, + series: "SeriesIdentity", + condition_operator: Optional[Union[str, "SeriesConfigurationConditionOperator"]] = None, + smart_detection_condition: Optional["SmartDetectionCondition"] = None, + hard_threshold_condition: Optional["HardThresholdCondition"] = None, + change_threshold_condition: Optional["ChangeThresholdCondition"] = None, + **kwargs + ): + super(SeriesConfiguration, self).__init__(**kwargs) + self.series = series + self.condition_operator = condition_operator + self.smart_detection_condition = smart_detection_condition + self.hard_threshold_condition = hard_threshold_condition + self.change_threshold_condition = change_threshold_condition + + +class SeriesIdentity(msrest.serialization.Model): + """SeriesIdentity. + + All required parameters must be populated in order to send to Azure. + + :param dimension: Required. dimension specified for series. + :type dimension: dict[str, str] + """ + + _validation = { + 'dimension': {'required': True}, + } + + _attribute_map = { + 'dimension': {'key': 'dimension', 'type': '{str}'}, + } + + def __init__( + self, + *, + dimension: Dict[str, str], + **kwargs + ): + super(SeriesIdentity, self).__init__(**kwargs) + self.dimension = dimension + + +class SeriesResult(msrest.serialization.Model): + """SeriesResult. + + All required parameters must be populated in order to send to Azure. + + :param series: Required. + :type series: ~azure.ai.metricsadvisor.models.SeriesIdentity + :param timestamp_list: Required. timestamps of the series. + :type timestamp_list: list[~datetime.datetime] + :param value_list: Required. values of the series. + :type value_list: list[float] + :param is_anomaly_list: Required. whether points of the series are anomalies. + :type is_anomaly_list: list[bool] + :param period_list: Required. period calculated on each point of the series. + :type period_list: list[int] + :param expected_value_list: Required. expected values of the series given by smart detector. + :type expected_value_list: list[float] + :param lower_boundary_list: Required. lower boundary list of the series given by smart + detector. + :type lower_boundary_list: list[float] + :param upper_boundary_list: Required. upper boundary list of the series given by smart + detector. + :type upper_boundary_list: list[float] + """ + + _validation = { + 'series': {'required': True}, + 'timestamp_list': {'required': True}, + 'value_list': {'required': True}, + 'is_anomaly_list': {'required': True}, + 'period_list': {'required': True}, + 'expected_value_list': {'required': True}, + 'lower_boundary_list': {'required': True}, + 'upper_boundary_list': {'required': True}, + } + + _attribute_map = { + 'series': {'key': 'series', 'type': 'SeriesIdentity'}, + 'timestamp_list': {'key': 'timestampList', 'type': '[iso-8601]'}, + 'value_list': {'key': 'valueList', 'type': '[float]'}, + 'is_anomaly_list': {'key': 'isAnomalyList', 'type': '[bool]'}, + 'period_list': {'key': 'periodList', 'type': '[int]'}, + 'expected_value_list': {'key': 'expectedValueList', 'type': '[float]'}, + 'lower_boundary_list': {'key': 'lowerBoundaryList', 'type': '[float]'}, + 'upper_boundary_list': {'key': 'upperBoundaryList', 'type': '[float]'}, + } + + def __init__( + self, + *, + series: "SeriesIdentity", + timestamp_list: List[datetime.datetime], + value_list: List[float], + is_anomaly_list: List[bool], + period_list: List[int], + expected_value_list: List[float], + lower_boundary_list: List[float], + upper_boundary_list: List[float], + **kwargs + ): + super(SeriesResult, self).__init__(**kwargs) + self.series = series + self.timestamp_list = timestamp_list + self.value_list = value_list + self.is_anomaly_list = is_anomaly_list + self.period_list = period_list + self.expected_value_list = expected_value_list + self.lower_boundary_list = lower_boundary_list + self.upper_boundary_list = upper_boundary_list + + +class SeriesResultList(msrest.serialization.Model): + """SeriesResultList. + + All required parameters must be populated in order to send to Azure. + + :param value: Required. + :type value: list[~azure.ai.metricsadvisor.models.SeriesResult] + """ + + _validation = { + 'value': {'required': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': '[SeriesResult]'}, + } + + def __init__( + self, + *, + value: List["SeriesResult"], + **kwargs + ): + super(SeriesResultList, self).__init__(**kwargs) + self.value = value + + +class SeverityCondition(msrest.serialization.Model): + """SeverityCondition. + + All required parameters must be populated in order to send to Azure. + + :param min_alert_severity: Required. min alert severity. Possible values include: "Low", + "Medium", "High". + :type min_alert_severity: str or ~azure.ai.metricsadvisor.models.Severity + :param max_alert_severity: Required. max alert severity. Possible values include: "Low", + "Medium", "High". + :type max_alert_severity: str or ~azure.ai.metricsadvisor.models.Severity + """ + + _validation = { + 'min_alert_severity': {'required': True}, + 'max_alert_severity': {'required': True}, + } + + _attribute_map = { + 'min_alert_severity': {'key': 'minAlertSeverity', 'type': 'str'}, + 'max_alert_severity': {'key': 'maxAlertSeverity', 'type': 'str'}, + } + + def __init__( + self, + *, + min_alert_severity: Union[str, "Severity"], + max_alert_severity: Union[str, "Severity"], + **kwargs + ): + super(SeverityCondition, self).__init__(**kwargs) + self.min_alert_severity = min_alert_severity + self.max_alert_severity = max_alert_severity + + +class SeverityFilterCondition(msrest.serialization.Model): + """SeverityFilterCondition. + + All required parameters must be populated in order to send to Azure. + + :param min: Required. min severity. Possible values include: "Low", "Medium", "High". + :type min: str or ~azure.ai.metricsadvisor.models.Severity + :param max: Required. max severity. Possible values include: "Low", "Medium", "High". + :type max: str or ~azure.ai.metricsadvisor.models.Severity + """ + + _validation = { + 'min': {'required': True}, + 'max': {'required': True}, + } + + _attribute_map = { + 'min': {'key': 'min', 'type': 'str'}, + 'max': {'key': 'max', 'type': 'str'}, + } + + def __init__( + self, + *, + min: Union[str, "Severity"], + max: Union[str, "Severity"], + **kwargs + ): + super(SeverityFilterCondition, self).__init__(**kwargs) + self.min = min + self.max = max + + +class SmartDetectionCondition(msrest.serialization.Model): + """SmartDetectionCondition. + + All required parameters must be populated in order to send to Azure. + + :param sensitivity: Required. sensitivity, value range : (0, 100]. + :type sensitivity: float + :param anomaly_detector_direction: Required. detection direction. Possible values include: + "Both", "Down", "Up". + :type anomaly_detector_direction: str or + ~azure.ai.metricsadvisor.models.AnomalyDetectorDirection + :param suppress_condition: Required. + :type suppress_condition: ~azure.ai.metricsadvisor.models.SuppressCondition + """ + + _validation = { + 'sensitivity': {'required': True}, + 'anomaly_detector_direction': {'required': True}, + 'suppress_condition': {'required': True}, + } + + _attribute_map = { + 'sensitivity': {'key': 'sensitivity', 'type': 'float'}, + 'anomaly_detector_direction': {'key': 'anomalyDetectorDirection', 'type': 'str'}, + 'suppress_condition': {'key': 'suppressCondition', 'type': 'SuppressCondition'}, + } + + def __init__( + self, + *, + sensitivity: float, + anomaly_detector_direction: Union[str, "AnomalyDetectorDirection"], + suppress_condition: "SuppressCondition", + **kwargs + ): + super(SmartDetectionCondition, self).__init__(**kwargs) + self.sensitivity = sensitivity + self.anomaly_detector_direction = anomaly_detector_direction + self.suppress_condition = suppress_condition + + +class SQLServerDataFeed(DataFeedDetail): + """SQLServerDataFeed. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :ivar data_feed_id: data feed unique id. + :vartype data_feed_id: str + :param data_feed_name: Required. data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param granularity_name: Required. granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param granularity_amount: if granularity is custom,it is required. + :type granularity_amount: int + :param metrics: Required. measure list. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :param dimension: dimension list. + :type dimension: list[~azure.ai.metricsadvisor.models.Dimension] + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: Required. ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". Default value: "NeedRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.NeedRollupEnum + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :type fill_missing_point_type: str or ~azure.ai.metricsadvisor.models.FillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". Default value: "Private". + :type view_mode: str or ~azure.ai.metricsadvisor.models.ViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :ivar is_admin: the query user is one of data feed administrator or not. + :vartype is_admin: bool + :ivar creator: data feed creator. + :vartype creator: str + :ivar status: data feed status. Possible values include: "Active", "Paused". Default value: + "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailStatus + :ivar created_time: data feed created time. + :vartype created_time: ~datetime.datetime + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: Required. + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'data_feed_id': {'readonly': True}, + 'data_feed_name': {'required': True}, + 'granularity_name': {'required': True}, + 'metrics': {'required': True, 'unique': True}, + 'dimension': {'unique': True}, + 'data_start_from': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + 'is_admin': {'readonly': True}, + 'creator': {'readonly': True}, + 'status': {'readonly': True}, + 'created_time': {'readonly': True}, + 'data_source_parameter': {'required': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_id': {'key': 'dataFeedId', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'granularity_name': {'key': 'granularityName', 'type': 'str'}, + 'granularity_amount': {'key': 'granularityAmount', 'type': 'int'}, + 'metrics': {'key': 'metrics', 'type': '[Metric]'}, + 'dimension': {'key': 'dimension', 'type': '[Dimension]'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'is_admin': {'key': 'isAdmin', 'type': 'bool'}, + 'creator': {'key': 'creator', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + *, + data_feed_name: str, + granularity_name: Union[str, "Granularity"], + metrics: List["Metric"], + data_start_from: datetime.datetime, + data_source_parameter: "SqlSourceParameter", + data_feed_description: Optional[str] = None, + granularity_amount: Optional[int] = None, + dimension: Optional[List["Dimension"]] = None, + timestamp_column: Optional[str] = None, + start_offset_in_seconds: Optional[int] = 0, + max_concurrency: Optional[int] = -1, + min_retry_interval_in_seconds: Optional[int] = -1, + stop_retry_after_in_seconds: Optional[int] = -1, + need_rollup: Optional[Union[str, "NeedRollupEnum"]] = "NeedRollup", + roll_up_method: Optional[Union[str, "DataFeedDetailRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "FillMissingPointType"]] = "SmartFilling", + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "ViewMode"]] = "Private", + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + action_link_template: Optional[str] = None, + **kwargs + ): + super(SQLServerDataFeed, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, granularity_name=granularity_name, granularity_amount=granularity_amount, metrics=metrics, dimension=dimension, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'SqlServer' # type: str + self.data_source_parameter = data_source_parameter + + +class SQLServerDataFeedPatch(DataFeedDetailPatch): + """SQLServerDataFeedPatch. + + All required parameters must be populated in order to send to Azure. + + :param data_source_type: Required. data source type.Constant filled by server. Possible values + include: "AzureApplicationInsights", "AzureBlob", "AzureCosmosDB", "AzureDataExplorer", + "AzureDataLakeStorageGen2", "AzureTable", "Elasticsearch", "HttpRequest", "InfluxDB", + "MongoDB", "MySql", "PostgreSql", "SqlServer". + :type data_source_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchDataSourceType + :param data_feed_name: data feed name. + :type data_feed_name: str + :param data_feed_description: data feed description. + :type data_feed_description: str + :param timestamp_column: user-defined timestamp column. if timestampColumn is null, start time + of every time slice will be used as default value. + :type timestamp_column: str + :param data_start_from: ingestion start time. + :type data_start_from: ~datetime.datetime + :param start_offset_in_seconds: the time that the beginning of data ingestion task will delay + for every data slice according to this offset. + :type start_offset_in_seconds: long + :param max_concurrency: the max concurrency of data ingestion queries against user data source. + 0 means no limitation. + :type max_concurrency: int + :param min_retry_interval_in_seconds: the min retry interval for failed data ingestion tasks. + :type min_retry_interval_in_seconds: long + :param stop_retry_after_in_seconds: stop retry data ingestion after the data slice first + schedule time in seconds. + :type stop_retry_after_in_seconds: long + :param need_rollup: mark if the data feed need rollup. Possible values include: "NoRollup", + "NeedRollup", "AlreadyRollup". + :type need_rollup: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchNeedRollup + :param roll_up_method: roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :type roll_up_method: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchRollUpMethod + :param roll_up_columns: roll up columns. + :type roll_up_columns: list[str] + :param all_up_identification: the identification value for the row of calculated all-up value. + :type all_up_identification: str + :param fill_missing_point_type: the type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". + :type fill_missing_point_type: str or + ~azure.ai.metricsadvisor.models.DataFeedDetailPatchFillMissingPointType + :param fill_missing_point_value: the value of fill missing point for anomaly detection. + :type fill_missing_point_value: float + :param view_mode: data feed access mode, default is Private. Possible values include: + "Private", "Public". + :type view_mode: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchViewMode + :param admins: data feed administrator. + :type admins: list[str] + :param viewers: data feed viewer. + :type viewers: list[str] + :param status: data feed status. Possible values include: "Active", "Paused". + :type status: str or ~azure.ai.metricsadvisor.models.DataFeedDetailPatchStatus + :param action_link_template: action link for alert. + :type action_link_template: str + :param data_source_parameter: + :type data_source_parameter: ~azure.ai.metricsadvisor.models.SqlSourceParameter + """ + + _validation = { + 'data_source_type': {'required': True}, + 'roll_up_columns': {'unique': True}, + 'admins': {'unique': True}, + 'viewers': {'unique': True}, + } + + _attribute_map = { + 'data_source_type': {'key': 'dataSourceType', 'type': 'str'}, + 'data_feed_name': {'key': 'dataFeedName', 'type': 'str'}, + 'data_feed_description': {'key': 'dataFeedDescription', 'type': 'str'}, + 'timestamp_column': {'key': 'timestampColumn', 'type': 'str'}, + 'data_start_from': {'key': 'dataStartFrom', 'type': 'iso-8601'}, + 'start_offset_in_seconds': {'key': 'startOffsetInSeconds', 'type': 'long'}, + 'max_concurrency': {'key': 'maxConcurrency', 'type': 'int'}, + 'min_retry_interval_in_seconds': {'key': 'minRetryIntervalInSeconds', 'type': 'long'}, + 'stop_retry_after_in_seconds': {'key': 'stopRetryAfterInSeconds', 'type': 'long'}, + 'need_rollup': {'key': 'needRollup', 'type': 'str'}, + 'roll_up_method': {'key': 'rollUpMethod', 'type': 'str'}, + 'roll_up_columns': {'key': 'rollUpColumns', 'type': '[str]'}, + 'all_up_identification': {'key': 'allUpIdentification', 'type': 'str'}, + 'fill_missing_point_type': {'key': 'fillMissingPointType', 'type': 'str'}, + 'fill_missing_point_value': {'key': 'fillMissingPointValue', 'type': 'float'}, + 'view_mode': {'key': 'viewMode', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'viewers': {'key': 'viewers', 'type': '[str]'}, + 'status': {'key': 'status', 'type': 'str'}, + 'action_link_template': {'key': 'actionLinkTemplate', 'type': 'str'}, + 'data_source_parameter': {'key': 'dataSourceParameter', 'type': 'SqlSourceParameter'}, + } + + def __init__( + self, + *, + data_feed_name: Optional[str] = None, + data_feed_description: Optional[str] = None, + timestamp_column: Optional[str] = None, + data_start_from: Optional[datetime.datetime] = None, + start_offset_in_seconds: Optional[int] = None, + max_concurrency: Optional[int] = None, + min_retry_interval_in_seconds: Optional[int] = None, + stop_retry_after_in_seconds: Optional[int] = None, + need_rollup: Optional[Union[str, "DataFeedDetailPatchNeedRollup"]] = None, + roll_up_method: Optional[Union[str, "DataFeedDetailPatchRollUpMethod"]] = None, + roll_up_columns: Optional[List[str]] = None, + all_up_identification: Optional[str] = None, + fill_missing_point_type: Optional[Union[str, "DataFeedDetailPatchFillMissingPointType"]] = None, + fill_missing_point_value: Optional[float] = None, + view_mode: Optional[Union[str, "DataFeedDetailPatchViewMode"]] = None, + admins: Optional[List[str]] = None, + viewers: Optional[List[str]] = None, + status: Optional[Union[str, "DataFeedDetailPatchStatus"]] = None, + action_link_template: Optional[str] = None, + data_source_parameter: Optional["SqlSourceParameter"] = None, + **kwargs + ): + super(SQLServerDataFeedPatch, self).__init__(data_feed_name=data_feed_name, data_feed_description=data_feed_description, timestamp_column=timestamp_column, data_start_from=data_start_from, start_offset_in_seconds=start_offset_in_seconds, max_concurrency=max_concurrency, min_retry_interval_in_seconds=min_retry_interval_in_seconds, stop_retry_after_in_seconds=stop_retry_after_in_seconds, need_rollup=need_rollup, roll_up_method=roll_up_method, roll_up_columns=roll_up_columns, all_up_identification=all_up_identification, fill_missing_point_type=fill_missing_point_type, fill_missing_point_value=fill_missing_point_value, view_mode=view_mode, admins=admins, viewers=viewers, status=status, action_link_template=action_link_template, **kwargs) + self.data_source_type = 'SqlServer' # type: str + self.data_source_parameter = data_source_parameter + + +class SqlSourceParameter(msrest.serialization.Model): + """SqlSourceParameter. + + All required parameters must be populated in order to send to Azure. + + :param connection_string: Required. Database connection string. + :type connection_string: str + :param query: Required. Query script. + :type query: str + """ + + _validation = { + 'connection_string': {'required': True}, + 'query': {'required': True}, + } + + _attribute_map = { + 'connection_string': {'key': 'connectionString', 'type': 'str'}, + 'query': {'key': 'query', 'type': 'str'}, + } + + def __init__( + self, + *, + connection_string: str, + query: str, + **kwargs + ): + super(SqlSourceParameter, self).__init__(**kwargs) + self.connection_string = connection_string + self.query = query + + +class SuppressCondition(msrest.serialization.Model): + """SuppressCondition. + + All required parameters must be populated in order to send to Azure. + + :param min_number: Required. min point number, value range : [1, +∞). + :type min_number: int + :param min_ratio: Required. min point ratio, value range : (0, 100]. + :type min_ratio: float + """ + + _validation = { + 'min_number': {'required': True}, + 'min_ratio': {'required': True}, + } + + _attribute_map = { + 'min_number': {'key': 'minNumber', 'type': 'int'}, + 'min_ratio': {'key': 'minRatio', 'type': 'float'}, + } + + def __init__( + self, + *, + min_number: int, + min_ratio: float, + **kwargs + ): + super(SuppressCondition, self).__init__(**kwargs) + self.min_number = min_number + self.min_ratio = min_ratio + + +class TopNGroupScope(msrest.serialization.Model): + """TopNGroupScope. + + All required parameters must be populated in order to send to Azure. + + :param top: Required. top N, value range : [1, +∞). + :type top: int + :param period: Required. point count used to look back, value range : [1, +∞). + :type period: int + :param min_top_count: Required. min count should be in top N, value range : [1, +∞) + + should be less than or equal to period. + :type min_top_count: int + """ + + _validation = { + 'top': {'required': True}, + 'period': {'required': True}, + 'min_top_count': {'required': True}, + } + + _attribute_map = { + 'top': {'key': 'top', 'type': 'int'}, + 'period': {'key': 'period', 'type': 'int'}, + 'min_top_count': {'key': 'minTopCount', 'type': 'int'}, + } + + def __init__( + self, + *, + top: int, + period: int, + min_top_count: int, + **kwargs + ): + super(TopNGroupScope, self).__init__(**kwargs) + self.top = top + self.period = period + self.min_top_count = min_top_count + + +class UsageStats(msrest.serialization.Model): + """UsageStats. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar timestamp: The timestamp of the stats. + :vartype timestamp: ~datetime.datetime + :ivar active_series_count: The active series count. + :vartype active_series_count: int + :ivar all_series_count: All series count under non deleted data feed. + :vartype all_series_count: int + :ivar metrics_count: The metrics count under non deleted data feed. + :vartype metrics_count: int + :ivar datafeed_count: The count of non deleted data feed. + :vartype datafeed_count: int + """ + + _validation = { + 'timestamp': {'readonly': True}, + 'active_series_count': {'readonly': True}, + 'all_series_count': {'readonly': True}, + 'metrics_count': {'readonly': True}, + 'datafeed_count': {'readonly': True}, + } + + _attribute_map = { + 'timestamp': {'key': 'timestamp', 'type': 'iso-8601'}, + 'active_series_count': {'key': 'activeSeriesCount', 'type': 'int'}, + 'all_series_count': {'key': 'allSeriesCount', 'type': 'int'}, + 'metrics_count': {'key': 'metricsCount', 'type': 'int'}, + 'datafeed_count': {'key': 'datafeedCount', 'type': 'int'}, + } + + def __init__( + self, + **kwargs + ): + super(UsageStats, self).__init__(**kwargs) + self.timestamp = None + self.active_series_count = None + self.all_series_count = None + self.metrics_count = None + self.datafeed_count = None + + +class ValueCondition(msrest.serialization.Model): + """ValueCondition. + + All required parameters must be populated in order to send to Azure. + + :param lower: lower bound + + should be specified when direction is Both or Down. + :type lower: float + :param upper: upper bound + + should be specified when direction is Both or Up. + :type upper: float + :param direction: Required. value filter direction. Possible values include: "Both", "Down", + "Up". + :type direction: str or ~azure.ai.metricsadvisor.models.Direction + :param metric_id: the other metric unique id used for value filter. + :type metric_id: str + :param trigger_for_missing: trigger alert when the corresponding point is missing in the other + metric + + should be specified only when using other metric to filter. + :type trigger_for_missing: bool + """ + + _validation = { + 'direction': {'required': True}, + } + + _attribute_map = { + 'lower': {'key': 'lower', 'type': 'float'}, + 'upper': {'key': 'upper', 'type': 'float'}, + 'direction': {'key': 'direction', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'trigger_for_missing': {'key': 'triggerForMissing', 'type': 'bool'}, + } + + def __init__( + self, + *, + direction: Union[str, "Direction"], + lower: Optional[float] = None, + upper: Optional[float] = None, + metric_id: Optional[str] = None, + trigger_for_missing: Optional[bool] = None, + **kwargs + ): + super(ValueCondition, self).__init__(**kwargs) + self.lower = lower + self.upper = upper + self.direction = direction + self.metric_id = metric_id + self.trigger_for_missing = trigger_for_missing + + +class WebhookHookInfo(HookInfo): + """WebhookHookInfo. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param hook_type: Required. hook type.Constant filled by server. Possible values include: + "Webhook", "Email". + :type hook_type: str or ~azure.ai.metricsadvisor.models.HookType + :ivar hook_id: Hook unique id. + :vartype hook_id: str + :param hook_name: Required. hook unique name. + :type hook_name: str + :param description: hook description. + :type description: str + :param external_link: hook external link. + :type external_link: str + :ivar admins: hook administrators. + :vartype admins: list[str] + :param hook_parameter: Required. + :type hook_parameter: ~azure.ai.metricsadvisor.models.WebhookHookParameter + """ + + _validation = { + 'hook_type': {'required': True}, + 'hook_id': {'readonly': True}, + 'hook_name': {'required': True}, + 'admins': {'readonly': True, 'unique': True}, + 'hook_parameter': {'required': True}, + } + + _attribute_map = { + 'hook_type': {'key': 'hookType', 'type': 'str'}, + 'hook_id': {'key': 'hookId', 'type': 'str'}, + 'hook_name': {'key': 'hookName', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'external_link': {'key': 'externalLink', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'hook_parameter': {'key': 'hookParameter', 'type': 'WebhookHookParameter'}, + } + + def __init__( + self, + *, + hook_name: str, + hook_parameter: "WebhookHookParameter", + description: Optional[str] = None, + external_link: Optional[str] = None, + **kwargs + ): + super(WebhookHookInfo, self).__init__(hook_name=hook_name, description=description, external_link=external_link, **kwargs) + self.hook_type = 'Webhook' # type: str + self.hook_parameter = hook_parameter + + +class WebhookHookInfoPatch(HookInfoPatch): + """WebhookHookInfoPatch. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param hook_type: Required. hook type.Constant filled by server. Possible values include: + "Webhook", "Email". + :type hook_type: str or ~azure.ai.metricsadvisor.models.HookInfoPatchHookType + :param hook_name: hook unique name. + :type hook_name: str + :param description: hook description. + :type description: str + :param external_link: hook external link. + :type external_link: str + :ivar admins: hook administrators. + :vartype admins: list[str] + :param hook_parameter: + :type hook_parameter: ~azure.ai.metricsadvisor.models.WebhookHookParameter + """ + + _validation = { + 'hook_type': {'required': True}, + 'admins': {'readonly': True, 'unique': True}, + } + + _attribute_map = { + 'hook_type': {'key': 'hookType', 'type': 'str'}, + 'hook_name': {'key': 'hookName', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + 'external_link': {'key': 'externalLink', 'type': 'str'}, + 'admins': {'key': 'admins', 'type': '[str]'}, + 'hook_parameter': {'key': 'hookParameter', 'type': 'WebhookHookParameter'}, + } + + def __init__( + self, + *, + hook_name: Optional[str] = None, + description: Optional[str] = None, + external_link: Optional[str] = None, + hook_parameter: Optional["WebhookHookParameter"] = None, + **kwargs + ): + super(WebhookHookInfoPatch, self).__init__(hook_name=hook_name, description=description, external_link=external_link, **kwargs) + self.hook_type = 'Webhook' # type: str + self.hook_parameter = hook_parameter + + +class WebhookHookParameter(msrest.serialization.Model): + """WebhookHookParameter. + + All required parameters must be populated in order to send to Azure. + + :param endpoint: Required. API address, will be called when alert is triggered, only support + POST method via SSL. + :type endpoint: str + :param username: basic authentication. + :type username: str + :param password: basic authentication. + :type password: str + :param headers: custom headers in api call. + :type headers: dict[str, str] + :param certificate_key: client certificate. + :type certificate_key: str + :param certificate_password: client certificate password. + :type certificate_password: str + """ + + _validation = { + 'endpoint': {'required': True}, + } + + _attribute_map = { + 'endpoint': {'key': 'endpoint', 'type': 'str'}, + 'username': {'key': 'username', 'type': 'str'}, + 'password': {'key': 'password', 'type': 'str'}, + 'headers': {'key': 'headers', 'type': '{str}'}, + 'certificate_key': {'key': 'certificateKey', 'type': 'str'}, + 'certificate_password': {'key': 'certificatePassword', 'type': 'str'}, + } + + def __init__( + self, + *, + endpoint: str, + username: Optional[str] = None, + password: Optional[str] = None, + headers: Optional[Dict[str, str]] = None, + certificate_key: Optional[str] = None, + certificate_password: Optional[str] = None, + **kwargs + ): + super(WebhookHookParameter, self).__init__(**kwargs) + self.endpoint = endpoint + self.username = username + self.password = password + self.headers = headers + self.certificate_key = certificate_key + self.certificate_password = certificate_password + + +class WholeMetricConfiguration(msrest.serialization.Model): + """WholeMetricConfiguration. + + :param condition_operator: condition operator + + should be specified when combining multiple detection conditions. Possible values include: + "AND", "OR". + :type condition_operator: str or + ~azure.ai.metricsadvisor.models.WholeMetricConfigurationConditionOperator + :param smart_detection_condition: + :type smart_detection_condition: ~azure.ai.metricsadvisor.models.SmartDetectionCondition + :param hard_threshold_condition: + :type hard_threshold_condition: ~azure.ai.metricsadvisor.models.HardThresholdCondition + :param change_threshold_condition: + :type change_threshold_condition: ~azure.ai.metricsadvisor.models.ChangeThresholdCondition + """ + + _attribute_map = { + 'condition_operator': {'key': 'conditionOperator', 'type': 'str'}, + 'smart_detection_condition': {'key': 'smartDetectionCondition', 'type': 'SmartDetectionCondition'}, + 'hard_threshold_condition': {'key': 'hardThresholdCondition', 'type': 'HardThresholdCondition'}, + 'change_threshold_condition': {'key': 'changeThresholdCondition', 'type': 'ChangeThresholdCondition'}, + } + + def __init__( + self, + *, + condition_operator: Optional[Union[str, "WholeMetricConfigurationConditionOperator"]] = None, + smart_detection_condition: Optional["SmartDetectionCondition"] = None, + hard_threshold_condition: Optional["HardThresholdCondition"] = None, + change_threshold_condition: Optional["ChangeThresholdCondition"] = None, + **kwargs + ): + super(WholeMetricConfiguration, self).__init__(**kwargs) + self.condition_operator = condition_operator + self.smart_detection_condition = smart_detection_condition + self.hard_threshold_condition = hard_threshold_condition + self.change_threshold_condition = change_threshold_condition diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/operations/__init__.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/operations/__init__.py new file mode 100644 index 000000000000..cbb0e496d2f9 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/operations/__init__.py @@ -0,0 +1,13 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2_operations import AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2OperationsMixin + +__all__ = [ + 'AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2OperationsMixin', +] diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/operations/_azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2_operations.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/operations/_azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2_operations.py new file mode 100644 index 000000000000..3cab165615ea --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/operations/_azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2_operations.py @@ -0,0 +1,2996 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING +import warnings + +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpRequest, HttpResponse + +from .. import models + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union + + T = TypeVar('T') + ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +class AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2OperationsMixin(object): + + def get_active_series_count( + self, + **kwargs # type: Any + ): + # type: (...) -> "models.UsageStats" + """Get latest usage stats. + + Get latest usage stats. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: UsageStats, or the result of cls(response) + :rtype: ~azure.ai.metricsadvisor.models.UsageStats + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.UsageStats"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.get_active_series_count.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('UsageStats', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_active_series_count.metadata = {'url': '/stats/latest'} # type: ignore + + def get_anomaly_alerting_configuration( + self, + configuration_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.AnomalyAlertingConfiguration" + """Query a single anomaly alerting configuration. + + Query a single anomaly alerting configuration. + + :param configuration_id: anomaly alerting configuration unique id. + :type configuration_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: AnomalyAlertingConfiguration, or the result of cls(response) + :rtype: ~azure.ai.metricsadvisor.models.AnomalyAlertingConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AnomalyAlertingConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.get_anomaly_alerting_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('AnomalyAlertingConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_anomaly_alerting_configuration.metadata = {'url': '/alert/anomaly/configurations/{configurationId}'} # type: ignore + + def update_anomaly_alerting_configuration( + self, + configuration_id, # type: str + body, # type: object + **kwargs # type: Any + ): + # type: (...) -> None + """Update anomaly alerting configuration. + + Update anomaly alerting configuration. + + :param configuration_id: anomaly alerting configuration unique id. + :type configuration_id: str + :param body: anomaly alerting configuration. + :type body: object + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/merge-patch+json") + accept = "application/json" + + # Construct URL + url = self.update_anomaly_alerting_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'object') + body_content_kwargs['content'] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + update_anomaly_alerting_configuration.metadata = {'url': '/alert/anomaly/configurations/{configurationId}'} # type: ignore + + def delete_anomaly_alerting_configuration( + self, + configuration_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + """Delete anomaly alerting configuration. + + Delete anomaly alerting configuration. + + :param configuration_id: anomaly alerting configuration unique id. + :type configuration_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.delete_anomaly_alerting_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + delete_anomaly_alerting_configuration.metadata = {'url': '/alert/anomaly/configurations/{configurationId}'} # type: ignore + + def create_anomaly_alerting_configuration( + self, + body, # type: "models.AnomalyAlertingConfiguration" + **kwargs # type: Any + ): + # type: (...) -> None + """Create anomaly alerting configuration. + + Create anomaly alerting configuration. + + :param body: anomaly alerting configuration. + :type body: ~azure.ai.metricsadvisor.models.AnomalyAlertingConfiguration + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.create_anomaly_alerting_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'AnomalyAlertingConfiguration') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + response_headers = {} + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + if cls: + return cls(pipeline_response, None, response_headers) + + create_anomaly_alerting_configuration.metadata = {'url': '/alert/anomaly/configurations'} # type: ignore + + def get_alerts_by_anomaly_alerting_configuration( + self, + configuration_id, # type: str + body, # type: "models.AlertingResultQuery" + skip=None, # type: Optional[int] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.AlertResultList"] + """Query alerts under anomaly alerting configuration. + + Query alerts under anomaly alerting configuration. + + :param configuration_id: anomaly alerting configuration unique id. + :type configuration_id: str + :param body: query alerting result request. + :type body: ~azure.ai.metricsadvisor.models.AlertingResultQuery + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AlertResultList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.AlertResultList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AlertResultList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_alerts_by_anomaly_alerting_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'AlertingResultQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'AlertingResultQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('AlertResultList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_alerts_by_anomaly_alerting_configuration.metadata = {'url': '/alert/anomaly/configurations/{configurationId}/alerts/query'} # type: ignore + + def get_anomalies_from_alert_by_anomaly_alerting_configuration( + self, + configuration_id, # type: str + alert_id, # type: str + skip=None, # type: Optional[int] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.AnomalyResultList"] + """Query anomalies under a specific alert. + + Query anomalies under a specific alert. + + :param configuration_id: anomaly alerting configuration unique id. + :type configuration_id: str + :param alert_id: alert id. + :type alert_id: str + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AnomalyResultList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.AnomalyResultList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AnomalyResultList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_anomalies_from_alert_by_anomaly_alerting_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + 'alertId': self._serialize.url("alert_id", alert_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + 'alertId': self._serialize.url("alert_id", alert_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('AnomalyResultList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_anomalies_from_alert_by_anomaly_alerting_configuration.metadata = {'url': '/alert/anomaly/configurations/{configurationId}/alerts/{alertId}/anomalies'} # type: ignore + + def get_incidents_from_alert_by_anomaly_alerting_configuration( + self, + configuration_id, # type: str + alert_id, # type: str + skip=None, # type: Optional[int] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.IncidentResultList"] + """Query incidents under a specific alert. + + Query incidents under a specific alert. + + :param configuration_id: anomaly alerting configuration unique id. + :type configuration_id: str + :param alert_id: alert id. + :type alert_id: str + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IncidentResultList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.IncidentResultList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.IncidentResultList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_incidents_from_alert_by_anomaly_alerting_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + 'alertId': self._serialize.url("alert_id", alert_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + 'alertId': self._serialize.url("alert_id", alert_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('IncidentResultList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_incidents_from_alert_by_anomaly_alerting_configuration.metadata = {'url': '/alert/anomaly/configurations/{configurationId}/alerts/{alertId}/incidents'} # type: ignore + + def get_anomaly_detection_configuration( + self, + configuration_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.AnomalyDetectionConfiguration" + """Query a single anomaly detection configuration. + + Query a single anomaly detection configuration. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: AnomalyDetectionConfiguration, or the result of cls(response) + :rtype: ~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AnomalyDetectionConfiguration"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.get_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('AnomalyDetectionConfiguration', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}'} # type: ignore + + def update_anomaly_detection_configuration( + self, + configuration_id, # type: str + body, # type: object + **kwargs # type: Any + ): + # type: (...) -> None + """Update anomaly detection configuration. + + Update anomaly detection configuration. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :param body: anomaly detection configuration. + :type body: object + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/merge-patch+json") + accept = "application/json" + + # Construct URL + url = self.update_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'object') + body_content_kwargs['content'] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + update_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}'} # type: ignore + + def delete_anomaly_detection_configuration( + self, + configuration_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + """Delete anomaly detection configuration. + + Delete anomaly detection configuration. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.delete_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + delete_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}'} # type: ignore + + def create_anomaly_detection_configuration( + self, + body, # type: "models.AnomalyDetectionConfiguration" + **kwargs # type: Any + ): + # type: (...) -> None + """Create anomaly detection configuration. + + Create anomaly detection configuration. + + :param body: anomaly detection configuration. + :type body: ~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.create_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'AnomalyDetectionConfiguration') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + response_headers = {} + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + if cls: + return cls(pipeline_response, None, response_headers) + + create_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations'} # type: ignore + + def get_anomaly_alerting_configurations_by_anomaly_detection_configuration( + self, + configuration_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.AnomalyAlertingConfigurationList"] + """Query all anomaly alerting configurations for specific anomaly detection configuration. + + Query all anomaly alerting configurations for specific anomaly detection configuration. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AnomalyAlertingConfigurationList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.AnomalyAlertingConfigurationList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AnomalyAlertingConfigurationList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_anomaly_alerting_configurations_by_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('AnomalyAlertingConfigurationList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_anomaly_alerting_configurations_by_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}/alert/anomaly/configurations'} # type: ignore + + def get_series_by_anomaly_detection_configuration( + self, + configuration_id, # type: str + body, # type: "models.DetectionSeriesQuery" + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.SeriesResultList"] + """Query series enriched by anomaly detection. + + Query series enriched by anomaly detection. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :param body: query series detection result request. + :type body: ~azure.ai.metricsadvisor.models.DetectionSeriesQuery + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either SeriesResultList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.SeriesResultList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.SeriesResultList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_series_by_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'DetectionSeriesQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'DetectionSeriesQuery') + body_content_kwargs['content'] = body_content + request = self._client.get(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('SeriesResultList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_series_by_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}/series/query'} # type: ignore + + def get_anomalies_by_anomaly_detection_configuration( + self, + configuration_id, # type: str + body, # type: "models.DetectionAnomalyResultQuery" + skip=None, # type: Optional[int] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.AnomalyResultList"] + """Query anomalies under anomaly detection configuration. + + Query anomalies under anomaly detection configuration. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :param body: query detection anomaly result request. + :type body: ~azure.ai.metricsadvisor.models.DetectionAnomalyResultQuery + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AnomalyResultList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.AnomalyResultList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AnomalyResultList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_anomalies_by_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'DetectionAnomalyResultQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'DetectionAnomalyResultQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('AnomalyResultList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_anomalies_by_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}/anomalies/query'} # type: ignore + + def get_dimension_of_anomalies_by_anomaly_detection_configuration( + self, + configuration_id, # type: str + body, # type: "models.AnomalyDimensionQuery" + skip=None, # type: Optional[int] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.AnomalyDimensionList"] + """Query dimension values of anomalies. + + Query dimension values of anomalies. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :param body: query dimension values request. + :type body: ~azure.ai.metricsadvisor.models.AnomalyDimensionQuery + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AnomalyDimensionList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.AnomalyDimensionList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AnomalyDimensionList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_dimension_of_anomalies_by_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'AnomalyDimensionQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'AnomalyDimensionQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('AnomalyDimensionList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_dimension_of_anomalies_by_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}/anomalies/dimension/query'} # type: ignore + + def get_incidents_by_anomaly_detection_configuration( + self, + configuration_id, # type: str + body, # type: "models.DetectionIncidentResultQuery" + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.IncidentResultList"] + """Query incidents under anomaly detection configuration. + + Query incidents under anomaly detection configuration. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :param body: query detection incident result request. + :type body: ~azure.ai.metricsadvisor.models.DetectionIncidentResultQuery + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IncidentResultList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.IncidentResultList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.IncidentResultList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_incidents_by_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'DetectionIncidentResultQuery') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'DetectionIncidentResultQuery') + body_content_kwargs['content'] = body_content + request = self._client.get(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('IncidentResultList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_incidents_by_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}/incidents/query'} # type: ignore + + def get_incidents_by_anomaly_detection_configuration_next_pages( + self, + configuration_id, # type: str + top=None, # type: Optional[int] + token=None, # type: Optional[str] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.IncidentResultList"] + """Query incidents under anomaly detection configuration. + + Query incidents under anomaly detection configuration. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :param top: + :type top: int + :param token: + :type token: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IncidentResultList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.IncidentResultList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.IncidentResultList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_incidents_by_anomaly_detection_configuration_next_pages.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + if token is not None: + query_parameters['$token'] = self._serialize.query("token", token, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('IncidentResultList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_incidents_by_anomaly_detection_configuration_next_pages.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}/incidents/query'} # type: ignore + + def get_root_cause_of_incident_by_anomaly_detection_configuration( + self, + configuration_id, # type: str + incident_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.RootCauseList"] + """Query root cause for incident. + + Query root cause for incident. + + :param configuration_id: anomaly detection configuration unique id. + :type configuration_id: str + :param incident_id: incident id. + :type incident_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either RootCauseList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.RootCauseList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.RootCauseList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_root_cause_of_incident_by_anomaly_detection_configuration.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'configurationId': self._serialize.url("configuration_id", configuration_id, 'str'), + 'incidentId': self._serialize.url("incident_id", incident_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('RootCauseList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_root_cause_of_incident_by_anomaly_detection_configuration.metadata = {'url': '/enrichment/anomalyDetection/configurations/{configurationId}/incidents/{incidentId}/rootCause'} # type: ignore + + def list_data_feeds( + self, + data_feed_name=None, # type: Optional[str] + data_source_type=None, # type: Optional[Union[str, "models.DataSourceType"]] + granularity_name=None, # type: Optional[Union[str, "models.Granularity"]] + status=None, # type: Optional[Union[str, "models.EntityStatus"]] + creator=None, # type: Optional[str] + skip=None, # type: Optional[int] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.DataFeedList"] + """List all data feeds. + + List all data feeds. + + :param data_feed_name: filter data feed by its name. + :type data_feed_name: str + :param data_source_type: filter data feed by its source type. + :type data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :param granularity_name: filter data feed by its granularity. + :type granularity_name: str or ~azure.ai.metricsadvisor.models.Granularity + :param status: filter data feed by its status. + :type status: str or ~azure.ai.metricsadvisor.models.EntityStatus + :param creator: filter data feed by its creator. + :type creator: str + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DataFeedList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.DataFeedList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.DataFeedList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.list_data_feeds.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if data_feed_name is not None: + query_parameters['dataFeedName'] = self._serialize.query("data_feed_name", data_feed_name, 'str') + if data_source_type is not None: + query_parameters['dataSourceType'] = self._serialize.query("data_source_type", data_source_type, 'str') + if granularity_name is not None: + query_parameters['granularityName'] = self._serialize.query("granularity_name", granularity_name, 'str') + if status is not None: + query_parameters['status'] = self._serialize.query("status", status, 'str') + if creator is not None: + query_parameters['creator'] = self._serialize.query("creator", creator, 'str') + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('DataFeedList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + list_data_feeds.metadata = {'url': '/dataFeeds'} # type: ignore + + def create_data_feed( + self, + body, # type: "models.DataFeedDetail" + **kwargs # type: Any + ): + # type: (...) -> None + """Create a new data feed. + + Create a new data feed. + + :param body: parameters to create a data feed. + :type body: ~azure.ai.metricsadvisor.models.DataFeedDetail + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.create_data_feed.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'DataFeedDetail') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + response_headers = {} + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + if cls: + return cls(pipeline_response, None, response_headers) + + create_data_feed.metadata = {'url': '/dataFeeds'} # type: ignore + + def get_data_feed_by_id( + self, + data_feed_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DataFeedDetail" + """Get a data feed by its id. + + Get a data feed by its id. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DataFeedDetail, or the result of cls(response) + :rtype: ~azure.ai.metricsadvisor.models.DataFeedDetail + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.DataFeedDetail"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.get_data_feed_by_id.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'dataFeedId': self._serialize.url("data_feed_id", data_feed_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('DataFeedDetail', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_data_feed_by_id.metadata = {'url': '/dataFeeds/{dataFeedId}'} # type: ignore + + def update_data_feed( + self, + data_feed_id, # type: str + body, # type: object + **kwargs # type: Any + ): + # type: (...) -> None + """Update a data feed. + + Update a data feed. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :param body: parameters to update a data feed. + :type body: object + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/merge-patch+json") + accept = "application/json" + + # Construct URL + url = self.update_data_feed.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'dataFeedId': self._serialize.url("data_feed_id", data_feed_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'object') + body_content_kwargs['content'] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + update_data_feed.metadata = {'url': '/dataFeeds/{dataFeedId}'} # type: ignore + + def delete_data_feed( + self, + data_feed_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + """Delete a data feed. + + Delete a data feed. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.delete_data_feed.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'dataFeedId': self._serialize.url("data_feed_id", data_feed_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + delete_data_feed.metadata = {'url': '/dataFeeds/{dataFeedId}'} # type: ignore + + def get_metric_feedback( + self, + feedback_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.MetricFeedback" + """Get a metric feedback by its id. + + Get a metric feedback by its id. + + :param feedback_id: + :type feedback_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: MetricFeedback, or the result of cls(response) + :rtype: ~azure.ai.metricsadvisor.models.MetricFeedback + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.MetricFeedback"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.get_metric_feedback.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'feedbackId': self._serialize.url("feedback_id", feedback_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('MetricFeedback', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_metric_feedback.metadata = {'url': '/feedback/metric/{feedbackId}'} # type: ignore + + def list_metric_feedbacks( + self, + body, # type: "models.MetricFeedbackFilter" + skip=None, # type: Optional[int] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.MetricFeedbackList"] + """List feedback on the given metric. + + List feedback on the given metric. + + :param body: metric feedback filter. + :type body: ~azure.ai.metricsadvisor.models.MetricFeedbackFilter + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either MetricFeedbackList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.MetricFeedbackList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.MetricFeedbackList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.list_metric_feedbacks.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricFeedbackFilter') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricFeedbackFilter') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('MetricFeedbackList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + list_metric_feedbacks.metadata = {'url': '/feedback/metric/query'} # type: ignore + + def create_metric_feedback( + self, + body, # type: "models.MetricFeedback" + **kwargs # type: Any + ): + # type: (...) -> None + """Create a new metric feedback. + + Create a new metric feedback. + + :param body: metric feedback. + :type body: ~azure.ai.metricsadvisor.models.MetricFeedback + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.create_metric_feedback.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricFeedback') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + response_headers = {} + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + if cls: + return cls(pipeline_response, None, response_headers) + + create_metric_feedback.metadata = {'url': '/feedback/metric'} # type: ignore + + def list_hooks( + self, + hook_name=None, # type: Optional[str] + skip=None, # type: Optional[int] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.HookList"] + """List all hooks. + + List all hooks. + + :param hook_name: filter hook by its name. + :type hook_name: str + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either HookList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.HookList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.HookList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.list_hooks.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if hook_name is not None: + query_parameters['hookName'] = self._serialize.query("hook_name", hook_name, 'str') + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('HookList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + list_hooks.metadata = {'url': '/hooks'} # type: ignore + + def create_hook( + self, + body, # type: "models.HookInfo" + **kwargs # type: Any + ): + # type: (...) -> None + """Create a new hook. + + Create a new hook. + + :param body: Create hook request. + :type body: ~azure.ai.metricsadvisor.models.HookInfo + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.create_hook.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'HookInfo') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + response_headers = {} + response_headers['Location']=self._deserialize('str', response.headers.get('Location')) + + if cls: + return cls(pipeline_response, None, response_headers) + + create_hook.metadata = {'url': '/hooks'} # type: ignore + + def get_hook( + self, + hook_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.HookInfo" + """Get a hook by its id. + + Get a hook by its id. + + :param hook_id: Hook unique ID. + :type hook_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: HookInfo, or the result of cls(response) + :rtype: ~azure.ai.metricsadvisor.models.HookInfo + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.HookInfo"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.get_hook.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'hookId': self._serialize.url("hook_id", hook_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('HookInfo', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_hook.metadata = {'url': '/hooks/{hookId}'} # type: ignore + + def update_hook( + self, + hook_id, # type: str + body, # type: object + **kwargs # type: Any + ): + # type: (...) -> None + """Update a hook. + + Update a hook. + + :param hook_id: Hook unique ID. + :type hook_id: str + :param body: Update hook request. + :type body: object + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/merge-patch+json") + accept = "application/json" + + # Construct URL + url = self.update_hook.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'hookId': self._serialize.url("hook_id", hook_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'object') + body_content_kwargs['content'] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + update_hook.metadata = {'url': '/hooks/{hookId}'} # type: ignore + + def delete_hook( + self, + hook_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + """Delete a hook. + + Delete a hook. + + :param hook_id: Hook unique ID. + :type hook_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.delete_hook.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'hookId': self._serialize.url("hook_id", hook_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + delete_hook.metadata = {'url': '/hooks/{hookId}'} # type: ignore + + def get_data_feed_ingestion_status( + self, + data_feed_id, # type: str + body, # type: "models.IngestionStatusQueryOptions" + skip=None, # type: Optional[int] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.IngestionStatusList"] + """Get data ingestion status by data feed. + + Get data ingestion status by data feed. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :param body: The query time range. + :type body: ~azure.ai.metricsadvisor.models.IngestionStatusQueryOptions + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either IngestionStatusList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.IngestionStatusList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.IngestionStatusList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_data_feed_ingestion_status.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'dataFeedId': self._serialize.url("data_feed_id", data_feed_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'IngestionStatusQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'IngestionStatusQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('IngestionStatusList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_data_feed_ingestion_status.metadata = {'url': '/dataFeeds/{dataFeedId}/ingestionStatus/query'} # type: ignore + + def reset_data_feed_ingestion_status( + self, + data_feed_id, # type: str + body, # type: "models.IngestionProgressResetOptions" + **kwargs # type: Any + ): + # type: (...) -> None + """Reset data ingestion status by data feed to backfill data. + + Reset data ingestion status by data feed to backfill data. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :param body: The backfill time range. + :type body: ~azure.ai.metricsadvisor.models.IngestionProgressResetOptions + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType[None] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.reset_data_feed_ingestion_status.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'dataFeedId': self._serialize.url("data_feed_id", data_feed_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'IngestionProgressResetOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + if cls: + return cls(pipeline_response, None, {}) + + reset_data_feed_ingestion_status.metadata = {'url': '/dataFeeds/{dataFeedId}/ingestionProgress/reset'} # type: ignore + + def get_ingestion_progress( + self, + data_feed_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DataFeedIngestionProgress" + """Get data last success ingestion job timestamp by data feed. + + Get data last success ingestion job timestamp by data feed. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DataFeedIngestionProgress, or the result of cls(response) + :rtype: ~azure.ai.metricsadvisor.models.DataFeedIngestionProgress + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.DataFeedIngestionProgress"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + # Construct URL + url = self.get_ingestion_progress.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'dataFeedId': self._serialize.url("data_feed_id", data_feed_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.ErrorCode, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('DataFeedIngestionProgress', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get_ingestion_progress.metadata = {'url': '/dataFeeds/{dataFeedId}/ingestionProgress'} # type: ignore + + def get_metric_data( + self, + metric_id, # type: str + body, # type: "models.MetricDataQueryOptions" + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.MetricDataList"] + """Get time series data from metric. + + Get time series data from metric. + + :param metric_id: metric unique id. + :type metric_id: str + :param body: query time series data condition. + :type body: ~azure.ai.metricsadvisor.models.MetricDataQueryOptions + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either MetricDataList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.MetricDataList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.MetricDataList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_metric_data.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'metricId': self._serialize.url("metric_id", metric_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricDataQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'metricId': self._serialize.url("metric_id", metric_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricDataQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.get(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('MetricDataList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_metric_data.metadata = {'url': '/metrics/{metricId}/data/query'} # type: ignore + + def get_metric_series( + self, + metric_id, # type: str + body, # type: "models.MetricSeriesQueryOptions" + skip=None, # type: Optional[int] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.MetricSeriesList"] + """List series (dimension combinations) from metric. + + List series (dimension combinations) from metric. + + :param metric_id: metric unique id. + :type metric_id: str + :param body: filter to query series. + :type body: ~azure.ai.metricsadvisor.models.MetricSeriesQueryOptions + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either MetricSeriesList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.MetricSeriesList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.MetricSeriesList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_metric_series.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'metricId': self._serialize.url("metric_id", metric_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricSeriesQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricSeriesQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('MetricSeriesList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_metric_series.metadata = {'url': '/metrics/{metricId}/series/query'} # type: ignore + + def get_metric_dimension( + self, + metric_id, # type: str + body, # type: "models.MetricDimensionQueryOptions" + skip=None, # type: Optional[int] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.MetricDimensionList"] + """List dimension from certain metric. + + List dimension from certain metric. + + :param metric_id: metric unique id. + :type metric_id: str + :param body: query dimension option. + :type body: ~azure.ai.metricsadvisor.models.MetricDimensionQueryOptions + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either MetricDimensionList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.MetricDimensionList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.MetricDimensionList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_metric_dimension.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'metricId': self._serialize.url("metric_id", metric_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricDimensionQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'MetricDimensionQueryOptions') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('MetricDimensionList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_metric_dimension.metadata = {'url': '/metrics/{metricId}/dimension/query'} # type: ignore + + def get_anomaly_detection_configurations_by_metric( + self, + metric_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.AnomalyDetectionConfigurationList"] + """Query all anomaly detection configurations for specific metric. + + Query all anomaly detection configurations for specific metric. + + :param metric_id: metric unique id. + :type metric_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either AnomalyDetectionConfigurationList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.AnomalyDetectionConfigurationList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.AnomalyDetectionConfigurationList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_anomaly_detection_configurations_by_metric.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'metricId': self._serialize.url("metric_id", metric_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'metricId': self._serialize.url("metric_id", metric_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('AnomalyDetectionConfigurationList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_anomaly_detection_configurations_by_metric.metadata = {'url': '/metrics/{metricId}/enrichment/anomalyDetection/configurations'} # type: ignore + + def get_enrichment_status_by_metric( + self, + metric_id, # type: str + body, # type: "models.EnrichmentStatusQueryOption" + skip=None, # type: Optional[int] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.EnrichmentStatusList"] + """Query anomaly detection status. + + Query anomaly detection status. + + :param metric_id: metric unique id. + :type metric_id: str + :param body: query options. + :type body: ~azure.ai.metricsadvisor.models.EnrichmentStatusQueryOption + :param skip: + :type skip: int + :param top: + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either EnrichmentStatusList or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.EnrichmentStatusList] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.EnrichmentStatusList"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + content_type = "application/json" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.get_enrichment_status_by_metric.metadata['url'] # type: ignore + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'metricId': self._serialize.url("metric_id", metric_id, 'str'), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if skip is not None: + query_parameters['$skip'] = self._serialize.query("skip", skip, 'int') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'EnrichmentStatusQueryOption') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + else: + url = '{nextLink}' # FIXME: manually edited; was '/{nextLink}' + path_format_arguments = { + 'endpoint': self._serialize.url("self._config.endpoint", self._config.endpoint, 'str', skip_quote=True), + 'nextLink': self._serialize.url("next_link", next_link, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(body, 'EnrichmentStatusQueryOption') + body_content_kwargs['content'] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('EnrichmentStatusList', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.ErrorCode, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + get_enrichment_status_by_metric.metadata = {'url': '/metrics/{metricId}/status/enrichment/anomalyDetection/query'} # type: ignore diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/py.typed b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/py.typed new file mode 100644 index 000000000000..e5aff4f83af8 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_generated/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561. \ No newline at end of file diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_helpers.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_helpers.py new file mode 100644 index 000000000000..50e223612a5f --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_helpers.py @@ -0,0 +1,185 @@ +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +from typing import ( + Union, + TYPE_CHECKING +) +import datetime +import six +from msrest import Serializer +from .models import ( + DataFeedGranularityType, + DataFeedGranularity, + DataFeedSchema, + Metric, + DataFeedIngestionSettings, + AnomalyFeedback, + ChangePointFeedback, + CommentFeedback, + PeriodFeedback, + DataFeedRollupType +) +if TYPE_CHECKING: + from ._generated.models import MetricFeedback + + +def construct_alert_config_dict(update_kwargs): + + if "metricAlertingConfigurations" in update_kwargs: + update_kwargs["metricAlertingConfigurations"] = [ + config._to_generated() for config in + update_kwargs["metricAlertingConfigurations"] + ] if update_kwargs["metricAlertingConfigurations"] else None + + return update_kwargs + + +def construct_detection_config_dict(update_kwargs): + + if "wholeMetricConfiguration" in update_kwargs: + update_kwargs["wholeMetricConfiguration"] = update_kwargs["wholeMetricConfiguration"]._to_generated() \ + if update_kwargs["wholeMetricConfiguration"] else None + if "dimensionGroupOverrideConfigurations" in update_kwargs: + update_kwargs["dimensionGroupOverrideConfigurations"] = [ + group._to_generated() for group in update_kwargs["dimensionGroupOverrideConfigurations"] + ] if update_kwargs["dimensionGroupOverrideConfigurations"] else None + if "seriesOverrideConfigurations" in update_kwargs: + update_kwargs["seriesOverrideConfigurations"] = [ + series._to_generated() for series in update_kwargs["seriesOverrideConfigurations"] + ] if update_kwargs["seriesOverrideConfigurations"] else None + + return update_kwargs + + +def construct_hook_dict(update_kwargs, hook_type): + + if hook_type.lower() == "email" and "toList" in update_kwargs: + update_kwargs["hookType"] = "Email" + update_kwargs["hookParameter"] = {} + update_kwargs["hookParameter"]["toList"] = update_kwargs["toList"] + update_kwargs.pop("toList") + elif hook_type.lower() == "web" \ + and any(key in update_kwargs for key in + ["endpoint", "username", "password", "certificateKey", "certificatePassword"]): + update_kwargs["hookType"] = "Webhook" + update_kwargs["hookParameter"] = {} + if "endpoint" in update_kwargs: + update_kwargs["hookParameter"]["endpoint"] = update_kwargs.pop("endpoint") + if "username" in update_kwargs: + update_kwargs["hookParameter"]["username"] = update_kwargs.pop("username") + if "password" in update_kwargs: + update_kwargs["hookParameter"]["password"] = update_kwargs.pop("password") + if "certificateKey" in update_kwargs: + update_kwargs["hookParameter"]["certificateKey"] = update_kwargs.pop("certificateKey") + if "certificatePassword" in update_kwargs: + update_kwargs["hookParameter"]["certificatePassword"] = update_kwargs.pop("certificatePassword") + + return update_kwargs + + +def construct_data_feed_dict(update_kwargs): + if "dataStartFrom" in update_kwargs: + update_kwargs["dataStartFrom"] = Serializer.serialize_iso(update_kwargs["dataStartFrom"]) + + if "dataSourceParameter" in update_kwargs: + update_kwargs["dataSourceParameter"] = update_kwargs["dataSourceParameter"]._to_generated_patch() + return update_kwargs + + +def convert_to_generated_data_feed_type( + generated_feed_type, + name, + source, + granularity, + schema, + ingestion_settings, + options +): + """Convert input to data feed generated model type + + :param generated_feed_type: generated model type of data feed + :type generated_feed_type: Union[AzureApplicationInsightsDataFeed, AzureBlobDataFeed, AzureCosmosDBDataFeed, + AzureDataExplorerDataFeed, AzureDataLakeStorageGen2DataFeed, AzureTableDataFeed, HttpRequestDataFeed, + InfluxDBDataFeed, MySqlDataFeed, PostgreSqlDataFeed, SQLServerDataFeed, MongoDBDataFeed, + ElasticsearchDataFeed] + :param str name: Name for the data feed. + :param source: The exposed model source of the data feed + :type source: Union[AzureApplicationInsightsDataFeed, AzureBlobDataFeed, AzureCosmosDBDataFeed, + AzureDataExplorerDataFeed, AzureDataLakeStorageGen2DataFeed, AzureTableDataFeed, HttpRequestDataFeed, + InfluxDBDataFeed, MySqlDataFeed, PostgreSqlDataFeed, SQLServerDataFeed, MongoDBDataFeed, + ElasticsearchDataFeed] + :param granularity: Granularity type and amount if using custom. + :type granularity: ~azure.ai.metricsadvisor.models.DataFeedGranularity + :param schema: Data feed schema + :type schema: ~azure.ai.metricsadvisor.models.DataFeedSchema + :param ingestion_settings: The data feed ingestions settings + :type ingestion_settings: ~azure.ai.metricsadvisor.models.DataFeedIngestionSettings + :param options: Data feed options. + :type options: ~azure.ai.metricsadvisor.models.DataFeedOptions + :rtype: Union[AzureApplicationInsightsDataFeed, AzureBlobDataFeed, AzureCosmosDBDataFeed, + AzureDataExplorerDataFeed, AzureDataLakeStorageGen2DataFeed, AzureTableDataFeed, HttpRequestDataFeed, + InfluxDBDataFeed, MySqlDataFeed, PostgreSqlDataFeed, SQLServerDataFeed, MongoDBDataFeed, + ElasticsearchDataFeed] + :return: The generated model for the data source type + """ + + if isinstance(granularity, six.string_types) or isinstance(granularity, DataFeedGranularityType): + granularity = DataFeedGranularity( + granularity_type=granularity, + ) + + if isinstance(schema, list): + schema = DataFeedSchema( + metrics=[Metric(name=metric_name) for metric_name in schema] + ) + + if isinstance(ingestion_settings, datetime.datetime) or isinstance(ingestion_settings, six.string_types): + ingestion_settings = DataFeedIngestionSettings( + ingestion_begin_time=ingestion_settings + ) + + return generated_feed_type( + data_source_parameter=source.__dict__, + data_feed_name=name, + granularity_name=granularity.granularity_type, + granularity_amount=granularity.custom_granularity_value, + metrics=[metric._to_generated() for metric in schema.metrics], + dimension=[dimension._to_generated() for dimension in schema.dimensions] if schema.dimensions else None, + timestamp_column=schema.timestamp_column, + data_start_from=ingestion_settings.ingestion_begin_time, + max_concurrency=ingestion_settings.data_source_request_concurrency, + min_retry_interval_in_seconds=ingestion_settings.ingestion_retry_delay, + start_offset_in_seconds=ingestion_settings.ingestion_start_offset, + stop_retry_after_in_seconds=ingestion_settings.stop_retry_after, + data_feed_description=options.data_feed_description if options else None, + need_rollup=DataFeedRollupType._to_generated(options.rollup_settings.rollup_type) + if options and options.rollup_settings else None, + roll_up_method=options.rollup_settings.rollup_method if options and options.rollup_settings else None, + roll_up_columns=options.rollup_settings.auto_rollup_group_by_column_names + if options and options.rollup_settings else None, + all_up_identification=options.rollup_settings.rollup_identification_value + if options and options.rollup_settings else None, + fill_missing_point_type=options.missing_data_point_fill_settings.fill_type + if options and options.missing_data_point_fill_settings else None, + fill_missing_point_value=options.missing_data_point_fill_settings.custom_fill_value + if options and options.missing_data_point_fill_settings else None, + viewers=options.viewers if options else None, + view_mode=options.access_mode if options else None, + admins=options.admins if options else None, + action_link_template=options.action_link_template if options else None + ) + +def convert_to_sub_feedback(feedback): + # type: (MetricFeedback) -> Union[AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback] + if feedback.feedback_type == "Anomaly": + return AnomalyFeedback._from_generated(feedback) + if feedback.feedback_type == "ChangePoint": + return ChangePointFeedback._from_generated(feedback) + if feedback.feedback_type == "Comment": + return CommentFeedback._from_generated(feedback) + if feedback.feedback_type == "Period": + return PeriodFeedback._from_generated(feedback) + return None diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_metrics_advisor_administration_client.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_metrics_advisor_administration_client.py new file mode 100644 index 000000000000..10a09b007f08 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_metrics_advisor_administration_client.py @@ -0,0 +1,1183 @@ +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +import six +import datetime +from typing import ( + Any, + List, + Union, + TYPE_CHECKING +) +from azure.core.tracing.decorator import distributed_trace +from ._generated._azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2 \ + import AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2 as _Client +from ._generated.models import AnomalyAlertingConfiguration as _AnomalyAlertingConfiguration +from ._generated.models import AzureApplicationInsightsDataFeed as _AzureApplicationInsightsDataFeed +from ._generated.models import AzureBlobDataFeed as _AzureBlobDataFeed +from ._generated.models import AzureCosmosDBDataFeed as _AzureCosmosDBDataFeed +from ._generated.models import AzureDataExplorerDataFeed as _AzureDataExplorerDataFeed +from ._generated.models import AzureTableDataFeed as _AzureTableDataFeed +from ._generated.models import HttpRequestDataFeed as _HttpRequestDataFeed +from ._generated.models import InfluxDBDataFeed as _InfluxDBDataFeed +from ._generated.models import MySqlDataFeed as _MySqlDataFeed +from ._generated.models import PostgreSqlDataFeed as _PostgreSqlDataFeed +from ._generated.models import MongoDBDataFeed as _MongoDBDataFeed +from ._generated.models import SQLServerDataFeed as _SQLServerDataFeed +from ._generated.models import AzureDataLakeStorageGen2DataFeed as _AzureDataLakeStorageGen2DataFeed +from ._generated.models import AzureDataLakeStorageGen2DataFeedPatch as _AzureDataLakeStorageGen2DataFeedPatch +from ._generated.models import ElasticsearchDataFeed as _ElasticsearchDataFeed +from ._generated.models import ElasticsearchDataFeedPatch as _ElasticsearchDataFeedPatch +from ._generated.models import AzureApplicationInsightsDataFeedPatch as _AzureApplicationInsightsDataFeedPatch +from ._generated.models import AzureBlobDataFeedPatch as _AzureBlobDataFeedPatch +from ._generated.models import AzureCosmosDBDataFeedPatch as _AzureCosmosDBDataFeedPatch +from ._generated.models import AzureDataExplorerDataFeedPatch as _AzureDataExplorerDataFeedPatch +from ._generated.models import AzureTableDataFeedPatch as _AzureTableDataFeedPatch +from ._generated.models import HttpRequestDataFeedPatch as _HttpRequestDataFeedPatch +from ._generated.models import InfluxDBDataFeedPatch as _InfluxDBDataFeedPatch +from ._generated.models import MySqlDataFeedPatch as _MySqlDataFeedPatch +from ._generated.models import PostgreSqlDataFeedPatch as _PostgreSqlDataFeedPatch +from ._generated.models import MongoDBDataFeedPatch as _MongoDBDataFeedPatch +from ._generated.models import SQLServerDataFeedPatch as _SQLServerDataFeedPatch +from ._generated.models import AnomalyDetectionConfiguration as _AnomalyDetectionConfiguration +from ._version import SDK_MONIKER +from ._metrics_advisor_key_credential_policy import MetricsAdvisorKeyCredentialPolicy +from ._helpers import ( + convert_to_generated_data_feed_type, + construct_alert_config_dict, + construct_detection_config_dict, + construct_hook_dict, + construct_data_feed_dict +) +from .models._models import ( + DataFeed, + EmailHook, + WebHook, + AnomalyAlertConfiguration, + AnomalyDetectionConfiguration, + DataFeedIngestionProgress, + AzureApplicationInsightsDataFeed, + AzureBlobDataFeed, + AzureCosmosDBDataFeed, + AzureDataExplorerDataFeed, + AzureTableDataFeed, + HttpRequestDataFeed, + InfluxDBDataFeed, + MySqlDataFeed, + PostgreSqlDataFeed, + SQLServerDataFeed, + MongoDBDataFeed, + AzureDataLakeStorageGen2DataFeed, + ElasticsearchDataFeed +) + +if TYPE_CHECKING: + from azure.core.paging import ItemPaged + from ._metrics_advisor_key_credential import MetricsAdvisorKeyCredential + from ._generated.models import IngestionStatus as DataFeedIngestionStatus + from .models._models import ( + MetricAlertConfiguration, + DataFeedGranularity, + DataFeedGranularityType, + DataFeedSchema, + DataFeedIngestionSettings, + Hook, + MetricDetectionCondition, + DataFeedIngestionProgress + ) + +DataFeedSourceUnion = Union[ + AzureApplicationInsightsDataFeed, + AzureBlobDataFeed, + AzureCosmosDBDataFeed, + AzureDataExplorerDataFeed, + AzureTableDataFeed, + HttpRequestDataFeed, + InfluxDBDataFeed, + MySqlDataFeed, + PostgreSqlDataFeed, + SQLServerDataFeed, + MongoDBDataFeed, + AzureDataLakeStorageGen2DataFeed, + ElasticsearchDataFeed +] + + +DATA_FEED = { + "SqlServer": _SQLServerDataFeed, + "AzureApplicationInsights": _AzureApplicationInsightsDataFeed, + "AzureBlob": _AzureBlobDataFeed, + "AzureCosmosDB": _AzureCosmosDBDataFeed, + "AzureDataExplorer": _AzureDataExplorerDataFeed, + "AzureTable": _AzureTableDataFeed, + "HttpRequest": _HttpRequestDataFeed, + "InfluxDB": _InfluxDBDataFeed, + "MySql": _MySqlDataFeed, + "PostgreSql": _PostgreSqlDataFeed, + "MongoDB": _MongoDBDataFeed, + "AzureDataLakeStorageGen2": _AzureDataLakeStorageGen2DataFeed, + "Elasticsearch": _ElasticsearchDataFeed +} + + +DATA_FEED_PATCH = { + "SqlServer": _SQLServerDataFeedPatch, + "AzureApplicationInsights": _AzureApplicationInsightsDataFeedPatch, + "AzureBlob": _AzureBlobDataFeedPatch, + "AzureCosmosDB": _AzureCosmosDBDataFeedPatch, + "AzureDataExplorer": _AzureDataExplorerDataFeedPatch, + "AzureTable": _AzureTableDataFeedPatch, + "HttpRequest": _HttpRequestDataFeedPatch, + "InfluxDB": _InfluxDBDataFeedPatch, + "MySql": _MySqlDataFeedPatch, + "PostgreSql": _PostgreSqlDataFeedPatch, + "MongoDB": _MongoDBDataFeedPatch, + "AzureDataLakeStorageGen2": _AzureDataLakeStorageGen2DataFeedPatch, + "Elasticsearch": _ElasticsearchDataFeedPatch +} + + +class MetricsAdvisorAdministrationClient(object): + """MetricsAdvisorAdministrationClient is used to create and manage data feeds. + + :param str endpoint: Supported Cognitive Services endpoints (protocol and hostname, + for example: https://:code:``.cognitiveservices.azure.com). + :param credential: An instance of ~azure.ai.metricsadvisor.MetricsAdvisorKeyCredential. + Requires both subscription key and API key. + :type credential: ~azure.ai.metricsadvisor.MetricsAdvisorKeyCredential + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_authentication.py + :start-after: [START administration_client_with_metrics_advisor_credential] + :end-before: [END administration_client_with_metrics_advisor_credential] + :language: python + :dedent: 4 + :caption: Authenticate MetricsAdvisorAdministrationClient with a MetricsAdvisorKeyCredential + """ + def __init__(self, endpoint, credential, **kwargs): + # type: (str, MetricsAdvisorKeyCredential, Any) -> None + + self._client = _Client( + endpoint=endpoint, + sdk_moniker=SDK_MONIKER, + authentication_policy=MetricsAdvisorKeyCredentialPolicy(credential), + **kwargs + ) + + def close(self): + # type: () -> None + """Close the :class:`~azure.ai.metricsadvisor.MetricsAdvisorAdministrationClient` session. + """ + return self._client.close() + + def __enter__(self): + # type: () -> MetricsAdvisorAdministrationClient + self._client.__enter__() # pylint: disable=no-member + return self + + def __exit__(self, *args): + # type: (*Any) -> None + self._client.__exit__(*args) # pylint: disable=no-member + + @distributed_trace + def create_anomaly_alert_configuration( + self, name, # type: str + metric_alert_configurations, # type: List[MetricAlertConfiguration] + hook_ids, # type: List[str] + **kwargs # type: Any + ): # type: (...) -> AnomalyAlertConfiguration + """Create an anomaly alert configuration. + + :param str name: Name for the anomaly alert configuration. + :param metric_alert_configurations: Anomaly alert configurations. + :type metric_alert_configurations: list[~azure.ai.metricsadvisor.models.MetricAlertConfiguration] + :param list[str] hook_ids: Unique hook IDs. + :keyword cross_metrics_operator: Cross metrics operator should be specified when setting up multiple metric + alert configurations. Possible values include: "AND", "OR", "XOR". + :paramtype cross_metrics_operator: str or + ~azure.ai.metricsadvisor.models.MetricAnomalyAlertConfigurationsOperator + :keyword str description: Anomaly alert configuration description. + :return: AnomalyAlertConfiguration + :rtype: ~azure.ai.metricsadvisor.models.AnomalyAlertConfiguration + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_anomaly_alert_configuration.py + :start-after: [START create_anomaly_alert_config] + :end-before: [END create_anomaly_alert_config] + :language: python + :dedent: 4 + :caption: Create an anomaly alert configuration + """ + + cross_metrics_operator = kwargs.pop("cross_metrics_operator", None) + response_headers = self._client.create_anomaly_alerting_configuration( + _AnomalyAlertingConfiguration( + name=name, + metric_alerting_configurations=[ + config._to_generated() for config in metric_alert_configurations + ], + hook_ids=hook_ids, + cross_metrics_operator=cross_metrics_operator, + description=kwargs.pop("description", None) + ), + cls=lambda pipeline_response, _, response_headers: response_headers, + **kwargs + ) + + config_id = response_headers["Location"].split("configurations/")[1] + return self.get_anomaly_alert_configuration(config_id) + + @distributed_trace + def create_data_feed( + self, name, # type: str + source, # type: DataFeedSourceUnion + granularity, # type: Union[str, DataFeedGranularityType, DataFeedGranularity] + schema, # type: Union[List[str], DataFeedSchema] + ingestion_settings, # type: Union[datetime.datetime, DataFeedIngestionSettings] + **kwargs # type: Any + ): # type: (...) -> DataFeed + """Create a new data feed. + + :param str name: Name for the data feed. + :param source: The source of the data feed + :type source: Union[AzureApplicationInsightsDataFeed, AzureBlobDataFeed, AzureCosmosDBDataFeed, + AzureDataExplorerDataFeed, AzureDataLakeStorageGen2DataFeed, AzureTableDataFeed, HttpRequestDataFeed, + InfluxDBDataFeed, MySqlDataFeed, PostgreSqlDataFeed, SQLServerDataFeed, MongoDBDataFeed, + ElasticsearchDataFeed] + :param granularity: Granularity type. If using custom granularity, you must instantiate a DataFeedGranularity. + :type granularity: Union[str, ~azure.ai.metricsadvisor.models.DataFeedGranularityType, + ~azure.ai.metricsadvisor.models.DataFeedGranularity] + :param schema: Data feed schema. Can be passed as a list of metric names as strings or as a DataFeedSchema + object if additional configuration is needed. + :type schema: Union[list[str], ~azure.ai.metricsadvisor.models.DataFeedSchema] + :param ingestion_settings: The data feed ingestions settings. Can be passed as a datetime to use for the + ingestion begin time or as a DataFeedIngestionSettings object if additional configuration is needed. + :type ingestion_settings: Union[~datetime.datetime, ~azure.ai.metricsadvisor.models.DataFeedIngestionSettings] + :keyword options: Data feed options. + :paramtype options: ~azure.ai.metricsadvisor.models.DataFeedOptions + :return: DataFeed + :rtype: ~azure.ai.metricsadvisor.models.DataFeed + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_data_feeds.py + :start-after: [START create_data_feed] + :end-before: [END create_data_feed] + :language: python + :dedent: 4 + :caption: Create a data feed + """ + + options = kwargs.pop("options", None) + data_feed_type = DATA_FEED[source.data_source_type] + data_feed_detail = convert_to_generated_data_feed_type( + generated_feed_type=data_feed_type, + name=name, + source=source, + granularity=granularity, + schema=schema, + ingestion_settings=ingestion_settings, + options=options + ) + + response_headers = self._client.create_data_feed( + data_feed_detail, + cls=lambda pipeline_response, _, response_headers: response_headers, + **kwargs + ) + data_feed_id = response_headers["Location"].split("dataFeeds/")[1] + return self.get_data_feed(data_feed_id) + + @distributed_trace + def create_hook( + self, name, # type: str + hook, # type: Union[EmailHook, WebHook] + **kwargs # type: Any + ): # type: (...) -> Union[Hook, EmailHook, WebHook] + """Create a new email or web hook. + + :param str name: The name for the hook. + :param hook: An email or web hook + :type hook: Union[~azure.ai.metricsadvisor.models.EmailHook, ~azure.ai.metricsadvisor.models.WebHook] + :return: EmailHook or WebHook + :rtype: Union[~azure.ai.metricsadvisor.models.Hook, ~azure.ai.metricsadvisor.models.EmailHook, + ~azure.ai.metricsadvisor.models.WebHook] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_hooks.py + :start-after: [START create_hook] + :end-before: [END create_hook] + :language: python + :dedent: 4 + :caption: Create a hook + """ + + hook_request = None + if hook.hook_type == "Email": + hook_request = hook._to_generated(name) + + if hook.hook_type == "Webhook": + hook_request = hook._to_generated(name) + + response_headers = self._client.create_hook( + hook_request, + cls=lambda pipeline_response, _, response_headers: response_headers, + **kwargs + ) + hook_id = response_headers["Location"].split("hooks/")[1] + return self.get_hook(hook_id) + + @distributed_trace + def create_metric_anomaly_detection_configuration( + self, name, # type: str + metric_id, # type: str + whole_series_detection_condition, # type: MetricDetectionCondition + **kwargs # type: Any + ): # type: (...) -> AnomalyDetectionConfiguration + """Create anomaly detection configuration. + + :param str name: The name for the anomaly detection configuration + :param str metric_id: Required. metric unique id. + :param whole_series_detection_condition: Required. + :type whole_series_detection_condition: ~azure.ai.metricsadvisor.models.MetricDetectionCondition + :keyword str description: anomaly detection configuration description. + :keyword series_group_detection_conditions: detection configuration for series group. + :paramtype series_group_detection_conditions: + list[~azure.ai.metricsadvisor.models.MetricSeriesGroupDetectionCondition] + :keyword series_detection_conditions: detection configuration for specific series. + :paramtype series_detection_conditions: + list[~azure.ai.metricsadvisor.models.MetricSingleSeriesDetectionCondition] + :return: AnomalyDetectionConfiguration + :rtype: ~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_anomaly_detection_configuration.py + :start-after: [START create_anomaly_detection_config] + :end-before: [END create_anomaly_detection_config] + :language: python + :dedent: 4 + :caption: Create an anomaly detection configuration + """ + description = kwargs.pop("description", None) + series_group_detection_conditions = kwargs.pop("series_group_detection_conditions", None) + series_detection_conditions = kwargs.pop("series_detection_conditions", None) + config = _AnomalyDetectionConfiguration( + name=name, + metric_id=metric_id, + description=description, + whole_metric_configuration=whole_series_detection_condition._to_generated(), + dimension_group_override_configurations=[ + group._to_generated() for group in series_group_detection_conditions + ] if series_group_detection_conditions else None, + series_override_configurations=[ + series._to_generated() for series in series_detection_conditions] + if series_detection_conditions else None, + ) + + response_headers = self._client.create_anomaly_detection_configuration( + config, + cls=lambda pipeline_response, _, response_headers: response_headers, + **kwargs + ) + config_id = response_headers["Location"].split("configurations/")[1] + return self.get_metric_anomaly_detection_configuration(config_id) + + @distributed_trace + def get_data_feed(self, data_feed_id, **kwargs): + # type: (str, Any) -> DataFeed + """Get a data feed by its id. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :return: DataFeed + :rtype: azure.ai.metricsadvisor.models.DataFeed + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_data_feeds.py + :start-after: [START get_data_feed] + :end-before: [END get_data_feed] + :language: python + :dedent: 4 + :caption: Get a single data feed by its ID + """ + + data_feed = self._client.get_data_feed_by_id( + data_feed_id, + **kwargs + ) + return DataFeed._from_generated(data_feed) + + @distributed_trace + def get_anomaly_alert_configuration(self, alert_configuration_id, **kwargs): + # type: (str, Any) -> AnomalyAlertConfiguration + """Get a single anomaly alert configuration. + + :param alert_configuration_id: anomaly alert configuration unique id. + :type alert_configuration_id: str + :return: AnomalyAlertConfiguration + :rtype: ~azure.ai.metricsadvisor.models.AnomalyAlertConfiguration + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_anomaly_alert_configuration.py + :start-after: [START get_anomaly_alert_config] + :end-before: [END get_anomaly_alert_config] + :language: python + :dedent: 4 + :caption: Get a single anomaly alert configuration by its ID + """ + + config = self._client.get_anomaly_alerting_configuration(alert_configuration_id, **kwargs) + return AnomalyAlertConfiguration._from_generated(config) + + @distributed_trace + def get_metric_anomaly_detection_configuration(self, detection_configuration_id, **kwargs): + # type: (str, Any) -> AnomalyDetectionConfiguration + """Get a single anomaly detection configuration. + + :param detection_configuration_id: anomaly detection configuration unique id. + :type detection_configuration_id: str + :return: AnomalyDetectionConfiguration + :rtype: ~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_anomaly_detection_configuration.py + :start-after: [START get_anomaly_detection_config] + :end-before: [END get_anomaly_detection_config] + :language: python + :dedent: 4 + :caption: Get a single anomaly detection configuration by its ID + """ + + config = self._client.get_anomaly_detection_configuration(detection_configuration_id, **kwargs) + return AnomalyDetectionConfiguration._from_generated(config) + + @distributed_trace + def get_hook( + self, + hook_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> Union[Hook, EmailHook, WebHook] + """Get a web or email hook by its id. + + :param hook_id: Hook unique ID. + :type hook_id: str + :return: EmailHook or Webhook + :rtype: Union[~azure.ai.metricsadvisor.models.Hook, ~azure.ai.metricsadvisor.models.EmailHook, + ~azure.ai.metricsadvisor.models.WebHook] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_hooks.py + :start-after: [START get_hook] + :end-before: [END get_hook] + :language: python + :dedent: 4 + :caption: Get a hook by its ID + """ + + hook = self._client.get_hook(hook_id, **kwargs) + if hook.hook_type == "Email": + return EmailHook._from_generated(hook) + return WebHook._from_generated(hook) + + @distributed_trace + def get_data_feed_ingestion_progress( + self, + data_feed_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> DataFeedIngestionProgress + """Get last successful data ingestion job timestamp by data feed. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :return: DataFeedIngestionProgress, containing latest_success_timestamp + and latest_active_timestamp + :rtype: ~azure.ai.metricsadvisor.models.DataFeedIngestionProgress + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_ingestion.py + :start-after: [START get_data_feed_ingestion_progress] + :end-before: [END get_data_feed_ingestion_progress] + :language: python + :dedent: 4 + :caption: Get the progress of data feed ingestion + """ + ingestion_process = self._client.get_ingestion_progress(data_feed_id, **kwargs) + return DataFeedIngestionProgress._from_generated(ingestion_process) + + @distributed_trace + def refresh_data_feed_ingestion( + self, + data_feed_id, # type: str + start_time, # type: datetime.datetime + end_time, # type: datetime.datetime + **kwargs # type: Any + ): + # type: (...) -> None + """Refreshes data ingestion by data feed to backfill data. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :param start_time: The start point of time range to refresh data ingestion. + :type start_time: ~datetime.datetime + :param end_time: The end point of time range to refresh data ingestion. + :type end_time: ~datetime.datetime + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_ingestion.py + :start-after: [START refresh_data_feed_ingestion] + :end-before: [END refresh_data_feed_ingestion] + :language: python + :dedent: 4 + :caption: Refresh data feed ingestion over a period of time + """ + self._client.reset_data_feed_ingestion_status( + data_feed_id, + body={ + "start_time": start_time, + "end_time": end_time + }, + **kwargs + ) + + @distributed_trace + def delete_anomaly_alert_configuration(self, alert_configuration_id, **kwargs): + # type: (str, Any) -> None + """Delete an anomaly alert configuration by its ID. + + :param alert_configuration_id: anomaly alert configuration unique id. + :type alert_configuration_id: str + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_anomaly_alert_configuration.py + :start-after: [START delete_anomaly_alert_config] + :end-before: [END delete_anomaly_alert_config] + :language: python + :dedent: 4 + :caption: Delete an anomaly alert configuration by its ID + """ + + self._client.delete_anomaly_alerting_configuration(alert_configuration_id, **kwargs) + + @distributed_trace + def delete_metric_anomaly_detection_configuration(self, detection_configuration_id, **kwargs): + # type: (str, Any) -> None + """Delete an anomaly detection configuration by its ID. + + :param detection_configuration_id: anomaly detection configuration unique id. + :type detection_configuration_id: str + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_anomaly_detection_configuration.py + :start-after: [START delete_anomaly_detection_config] + :end-before: [END delete_anomaly_detection_config] + :language: python + :dedent: 4 + :caption: Delete an anomaly detection configuration by its ID + """ + + self._client.delete_anomaly_detection_configuration(detection_configuration_id, **kwargs) + + @distributed_trace + def delete_data_feed(self, data_feed_id, **kwargs): + # type: (str, Any) -> None + """Delete a data feed by its ID. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_data_feeds.py + :start-after: [START delete_data_feed] + :end-before: [END delete_data_feed] + :language: python + :dedent: 4 + :caption: Delete a data feed by its ID + """ + + self._client.delete_data_feed(data_feed_id, **kwargs) + + @distributed_trace + def delete_hook(self, hook_id, **kwargs): + # type: (str, Any) -> None + """Delete a web or email hook by its ID. + + :param hook_id: Hook unique ID. + :type hook_id: str + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_hooks.py + :start-after: [START delete_hook] + :end-before: [END delete_hook] + :language: python + :dedent: 4 + :caption: Delete a hook by its ID + """ + + self._client.delete_hook(hook_id, **kwargs) + + @distributed_trace + def update_data_feed( + self, data_feed, # type: Union[str, DataFeed] + **kwargs # type: Any + ): # type: (...) -> DataFeed + """Update a data feed. Either pass the entire DataFeed object with the chosen updates + or the ID to your data feed with updates passed via keyword arguments. If you pass both + the DataFeed object and keyword arguments, the keyword arguments will take precedence. + + :param data_feed: The data feed with updates or the data feed ID. + :type data_feed: ~azure.ai.metricsadvisor.models.DataFeed or str + :keyword str name: The name to update the data feed. + :keyword str timestamp_column: User-defined timestamp column name. + :keyword ~datetime.datetime ingestion_begin_time: Ingestion start time. + :keyword int data_source_request_concurrency: The max concurrency of data ingestion queries against + user data source. Zero (0) means no limitation. + :keyword int ingestion_retry_delay: The min retry interval for failed data ingestion tasks, in seconds. + :keyword int ingestion_start_offset: The time that the beginning of data ingestion task will delay + for every data slice according to this offset, in seconds. + :keyword int stop_retry_after: Stop retry data ingestion after the data slice first + schedule time in seconds. + :keyword str rollup_identification_value: The identification value for the row of calculated + all-up value. + :keyword rollup_type: Mark if the data feed needs rollup. Possible values include: "NoRollup", + "AutoRollup", "AlreadyRollup". Default value: "AutoRollup". + :paramtype roll_up_type: str or ~azure.ai.metricsadvisor.models.DataFeedRollupType + :keyword list[str] auto_rollup_group_by_column_names: Roll up columns. + :keyword rollup_method: Roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :paramtype rollup_method: str or ~azure.ai.metricsadvisor.models.DataFeedAutoRollupMethod + :keyword fill_type: The type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :paramtype fill_type: str or ~azure.ai.metricsadvisor.models.DataSourceMissingDataPointFillType + :keyword float custom_fill_value: The value of fill missing point for anomaly detection + if "CustomValue" fill type is specified. + :keyword list[str] admins: Data feed administrators. + :keyword str data_feed_description: Data feed description. + :keyword list[str] viewers: Data feed viewer. + :keyword access_mode: Data feed access mode. Possible values include: + "Private", "Public". Default value: "Private". + :paramtype access_mode: str or ~azure.ai.metricsadvisor.models.DataFeedAccessMode + :keyword str action_link_template: action link for alert. + :keyword status: Data feed status. Possible values include: "Active", "Paused". + :paramtype status: str or ~azure.ai.metricsadvisor.models.DataFeedStatus + :keyword source: The source of the data feed for update + :paramtype source: Union[AzureApplicationInsightsDataFeed, AzureBlobDataFeed, AzureCosmosDBDataFeed, + AzureDataExplorerDataFeed, AzureDataLakeStorageGen2DataFeed, AzureTableDataFeed, HttpRequestDataFeed, + InfluxDBDataFeed, MySqlDataFeed, PostgreSqlDataFeed, SQLServerDataFeed, MongoDBDataFeed, + ElasticsearchDataFeed] + :return: DataFeed + :rtype: ~azure.ai.metricsadvisor.models.DataFeed + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_data_feeds.py + :start-after: [START update_data_feed] + :end-before: [END update_data_feed] + :language: python + :dedent: 4 + :caption: Update an existing data feed + """ + + unset = object() + update_kwargs = {} + update_kwargs["dataFeedName"] = kwargs.pop("name", unset) + update_kwargs["dataFeedDescription"] = kwargs.pop("data_feed_description", unset) + update_kwargs["timestampColumn"] = kwargs.pop("timestamp_column", unset) + update_kwargs["dataStartFrom"] = kwargs.pop("ingestion_begin_time", unset) + update_kwargs["startOffsetInSeconds"] = kwargs.pop("ingestion_start_offset", unset) + update_kwargs["maxConcurrency"] = kwargs.pop("data_source_request_concurrency", unset) + update_kwargs["minRetryIntervalInSeconds"] = kwargs.pop("ingestion_retry_delay", unset) + update_kwargs["stopRetryAfterInSeconds"] = kwargs.pop("stop_retry_after", unset) + update_kwargs["needRollup"] = kwargs.pop("rollup_type", unset) + update_kwargs["rollUpMethod"] = kwargs.pop("rollup_method", unset) + update_kwargs["rollUpColumns"] = kwargs.pop("auto_rollup_group_by_column_names", unset) + update_kwargs["allUpIdentification"] = kwargs.pop("rollup_identification_value", unset) + update_kwargs["fillMissingPointType"] = kwargs.pop("fill_type", unset) + update_kwargs["fillMissingPointValue"] = kwargs.pop("custom_fill_value", unset) + update_kwargs["viewMode"] = kwargs.pop("access_mode", unset) + update_kwargs["admins"] = kwargs.pop("admins", unset) + update_kwargs["viewers"] = kwargs.pop("viewers", unset) + update_kwargs["status"] = kwargs.pop("status", unset) + update_kwargs["actionLinkTemplate"] = kwargs.pop("action_link_template", unset) + update_kwargs["dataSourceParameter"] = kwargs.pop("source", unset) + + update = {key: value for key, value in update_kwargs.items() if value != unset} + + if isinstance(data_feed, six.string_types): + data_feed_id = data_feed + data_feed_patch = construct_data_feed_dict(update) + + else: + data_feed_id = data_feed.id + data_feed_patch_type = DATA_FEED_PATCH[data_feed.source.data_source_type] + data_feed_patch = data_feed._to_generated_patch(data_feed_patch_type, update) + + self._client.update_data_feed(data_feed_id, data_feed_patch, **kwargs) + return self.get_data_feed(data_feed_id) + + @distributed_trace + def update_anomaly_alert_configuration( + self, + alert_configuration, # type: Union[str, AnomalyAlertConfiguration] + **kwargs # type: Any + ): + # type: (...) -> AnomalyAlertConfiguration + """Update anomaly alerting configuration. Either pass the entire AnomalyAlertConfiguration object + with the chosen updates or the ID to your alert configuration with updates passed via keyword arguments. + If you pass both the AnomalyAlertConfiguration object and keyword arguments, the keyword arguments + will take precedence. + + :param alert_configuration: AnomalyAlertConfiguration object or the ID to the alert configuration. + :type alert_configuration: str or ~azure.ai.metricsadvisor.models.AnomalyAlertConfiguration + :keyword str name: Name for the anomaly alert configuration. + :keyword metric_alert_configurations: Anomaly alert configurations. + :paramtype metric_alert_configurations: list[~azure.ai.metricsadvisor.models.MetricAlertConfiguration] + :keyword list[str] hook_ids: Unique hook IDs. + :keyword cross_metrics_operator: Cross metrics operator should be specified when setting up multiple metric + alert configurations. Possible values include: "AND", "OR", "XOR". + :paramtype cross_metrics_operator: str or + ~azure.ai.metricsadvisor.models.MetricAnomalyAlertConfigurationsOperator + :keyword str description: Anomaly alert configuration description. + :return: AnomalyAlertConfiguration + :rtype: ~azure.ai.metricsadvisor.models.AnomalyAlertConfiguration + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_anomaly_alert_configuration.py + :start-after: [START update_anomaly_alert_config] + :end-before: [END update_anomaly_alert_config] + :language: python + :dedent: 4 + :caption: Update an existing anomaly alert configuration + """ + + unset = object() + update_kwargs = {} + update_kwargs["name"] = kwargs.pop("name", unset) + update_kwargs["hookIds"] = kwargs.pop("hook_ids", unset) + update_kwargs["crossMetricsOperator"] = kwargs.pop("cross_metrics_operator", unset) + update_kwargs["metricAlertingConfigurations"] = kwargs.pop("metric_alert_configurations", unset) + update_kwargs["description"] = kwargs.pop("description", unset) + + update = {key: value for key, value in update_kwargs.items() if value != unset} + if isinstance(alert_configuration, six.string_types): + alert_configuration_id = alert_configuration + alert_configuration_patch = construct_alert_config_dict(update) + + else: + alert_configuration_id = alert_configuration.id + alert_configuration_patch = alert_configuration._to_generated_patch( + name=update.pop("name", None), + metric_alert_configurations=update.pop("metricAlertingConfigurations", None), + hook_ids=update.pop("hookIds", None), + cross_metrics_operator=update.pop("crossMetricsOperator", None), + description=update.pop("description", None), + ) + + self._client.update_anomaly_alerting_configuration( + alert_configuration_id, + alert_configuration_patch, + **kwargs + ) + return self.get_anomaly_alert_configuration(alert_configuration_id) + + @distributed_trace + def update_metric_anomaly_detection_configuration( + self, + detection_configuration, # type: Union[str, AnomalyDetectionConfiguration] + **kwargs # type: Any + ): + # type: (...) -> AnomalyDetectionConfiguration + """Update anomaly metric detection configuration. Either pass the entire AnomalyDetectionConfiguration object + with the chosen updates or the ID to your detection configuration with updates passed via keyword arguments. + If you pass both the AnomalyDetectionConfiguration object and keyword arguments, the keyword arguments + will take precedence. + + :param detection_configuration: AnomalyDetectionConfiguration object or the ID to the detection + configuration. + :type detection_configuration: str or ~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration + :keyword str name: The name for the anomaly detection configuration + :keyword str metric_id: metric unique id. + :keyword whole_series_detection_condition: Required. + :paramtype whole_series_detection_condition: ~azure.ai.metricsadvisor.models.MetricDetectionCondition + :keyword str description: anomaly detection configuration description. + :keyword series_group_detection_conditions: detection configuration for series group. + :paramtype series_group_detection_conditions: + list[~azure.ai.metricsadvisor.models.MetricSeriesGroupDetectionCondition] + :keyword series_detection_conditions: detection configuration for specific series. + :paramtype series_detection_conditions: + list[~azure.ai.metricsadvisor.models.MetricSingleSeriesDetectionCondition] + :return: AnomalyDetectionConfiguration + :rtype: ~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_anomaly_detection_configuration.py + :start-after: [START update_anomaly_detection_config] + :end-before: [END update_anomaly_detection_config] + :language: python + :dedent: 4 + :caption: Update an existing anomaly detection configuration + """ + + unset = object() + update_kwargs = {} + update_kwargs["name"] = kwargs.pop("name", unset) + update_kwargs["wholeMetricConfiguration"] = kwargs.pop("whole_series_detection_condition", unset) + update_kwargs["dimensionGroupOverrideConfigurations"] = kwargs.pop("series_group_detection_conditions", unset) + update_kwargs["seriesOverrideConfigurations"] = kwargs.pop("series_detection_conditions", unset) + update_kwargs["description"] = kwargs.pop("description", unset) + + update = {key: value for key, value in update_kwargs.items() if value != unset} + if isinstance(detection_configuration, six.string_types): + detection_configuration_id = detection_configuration + detection_config_patch = construct_detection_config_dict(update) + + else: + detection_configuration_id = detection_configuration.id + detection_config_patch = detection_configuration._to_generated_patch( + name=update.pop("name", None), + description=update.pop("description", None), + whole_series_detection_condition=update.pop("wholeMetricConfiguration", None), + series_group_detection_conditions=update.pop("dimensionGroupOverrideConfigurations", None), + series_detection_conditions=update.pop("seriesOverrideConfigurations", None) + ) + + self._client.update_anomaly_detection_configuration( + detection_configuration_id, + detection_config_patch, + **kwargs + ) + return self.get_metric_anomaly_detection_configuration(detection_configuration_id) + + @distributed_trace + def update_hook( + self, + hook, # type: Union[str, EmailHook, WebHook] + **kwargs # type: Any + ): + # type: (...) -> Union[Hook, EmailHook, WebHook] + """Update a hook. Either pass the entire EmailHook or WebHook object with the chosen updates, or the + ID to your hook configuration with the updates passed via keyword arguments. + If you pass both the hook object and keyword arguments, the keyword arguments will take precedence. + + :param hook: An email or web hook or the ID to the hook. If an ID is passed, you must pass `hook_type`. + :type hook: Union[str, ~azure.ai.metricsadvisor.models.EmailHook, ~azure.ai.metricsadvisor.models.WebHook] + :keyword str hook_type: The hook type. Possible values are "Email" or "Web". Must be passed if only the + hook ID is provided. + :keyword str name: Hook unique name. + :keyword str description: Hook description. + :keyword str external_link: Hook external link. + :keyword list[str] emails_to_alert: Email TO: list. Only should be passed to update EmailHook. + :keyword str endpoint: API address, will be called when alert is triggered, only support + POST method via SSL. Only should be passed to update WebHook. + :keyword str username: basic authentication. Only should be passed to update WebHook. + :keyword str password: basic authentication. Only should be passed to update WebHook. + :keyword str certificate_key: client certificate. Only should be passed to update WebHook. + :keyword str certificate_password: client certificate password. Only should be passed to update WebHook. + :return: EmailHook or WebHook + :rtype: Union[~azure.ai.metricsadvisor.models.Hook, ~azure.ai.metricsadvisor.models.EmailHook, + ~azure.ai.metricsadvisor.models.WebHook] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_hooks.py + :start-after: [START update_hook] + :end-before: [END update_hook] + :language: python + :dedent: 4 + :caption: Update an existing hook + """ + + unset = object() + update_kwargs = {} + hook_patch = None + hook_type = kwargs.pop("hook_type", None) + update_kwargs["hookName"] = kwargs.pop("name", unset) + update_kwargs["description"] = kwargs.pop("description", unset) + update_kwargs["externalLink"] = kwargs.pop("external_link", unset) + update_kwargs["toList"] = kwargs.pop("emails_to_alert", unset) + update_kwargs["endpoint"] = kwargs.pop('endpoint', unset) + update_kwargs["username"] = kwargs.pop('username', unset) + update_kwargs["password"] = kwargs.pop('password', unset) + update_kwargs["certificateKey"] = kwargs.pop('certificate_key', unset) + update_kwargs["certificatePassword"] = kwargs.pop('certificate_password', unset) + + update = {key: value for key, value in update_kwargs.items() if value != unset} + if isinstance(hook, six.string_types): + hook_id = hook + if hook_type is None: + raise ValueError("hook_type must be passed with a hook ID.") + + hook_patch = construct_hook_dict(update, hook_type) + + else: + hook_id = hook.id + if hook.hook_type == "Email": + hook_patch = hook._to_generated_patch( + name=update.pop("hookName", None), + description=update.pop("description", None), + external_link=update.pop("externalLink", None), + emails_to_alert=update.pop("toList", None), + ) + + elif hook.hook_type == "Webhook": + hook_patch = hook._to_generated_patch( + name=update.pop("hookName", None), + description=update.pop("description", None), + external_link=update.pop("externalLink", None), + endpoint=update.pop("endpoint", None), + password=update.pop("password", None), + username=update.pop("username", None), + certificate_key=update.pop("certificateKey", None), + certificate_password=update.pop("certificatePassword", None) + ) + + self._client.update_hook( + hook_id, + hook_patch, + **kwargs + ) + return self.get_hook(hook_id) + + @distributed_trace + def list_hooks( + self, + **kwargs # type: Any + ): + # type: (...) -> ItemPaged[Union[Hook, EmailHook, WebHook]] + """List all hooks. + + :keyword str hook_name: filter hook by its name. + :keyword int skip: + :return: Pageable containing EmailHook and WebHook + :rtype: ~azure.core.paging.ItemPaged[Union[~azure.ai.metricsadvisor.models.Hook, + ~azure.ai.metricsadvisor.models.EmailHook, ~azure.ai.metricsadvisor.models.WebHook]] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_hooks.py + :start-after: [START list_hooks] + :end-before: [END list_hooks] + :language: python + :dedent: 4 + :caption: List all of the hooks under the account + """ + hook_name = kwargs.pop('hook_name', None) + skip = kwargs.pop('skip', None) + + def _convert_to_hook_type(hook): + if hook.hook_type == "Email": + return EmailHook._from_generated(hook) + return WebHook._from_generated(hook) + + return self._client.list_hooks( + hook_name=hook_name, + skip=skip, + cls=kwargs.pop("cls", lambda hooks: [_convert_to_hook_type(hook) for hook in hooks]), + **kwargs + ) + + @distributed_trace + def list_data_feeds( + self, + **kwargs # type: Any + ): + # type: (...) -> ItemPaged[DataFeed] + """List all data feeds. + + :keyword str data_feed_name: filter data feed by its name. + :keyword data_source_type: filter data feed by its source type. + :paramtype data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :keyword granularity_type: filter data feed by its granularity. + :paramtype granularity_type: str or ~azure.ai.metricsadvisor.models.DataFeedGranularityType + :keyword status: filter data feed by its status. + :paramtype status: str or ~azure.ai.metricsadvisor.models.DataFeedStatus + :keyword str creator: filter data feed by its creator. + :keyword int skip: + :return: Pageable of DataFeed + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.DataFeed] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_data_feeds.py + :start-after: [START list_data_feeds] + :end-before: [END list_data_feeds] + :language: python + :dedent: 4 + :caption: List data feeds under an account. + """ + + data_feed_name = kwargs.pop("data_feed_name", None) + data_source_type = kwargs.pop("data_source_type", None) + granularity_type = kwargs.pop("granularity_type", None) + status = kwargs.pop("status", None) + creator = kwargs.pop("creator", None) + skip = kwargs.pop("skip", None) + + return self._client.list_data_feeds( + data_feed_name=data_feed_name, + data_source_type=data_source_type, + granularity_name=granularity_type, + status=status, + creator=creator, + skip=skip, + cls=kwargs.pop("cls", lambda feeds: [DataFeed._from_generated(feed) for feed in feeds]), + **kwargs + ) + + @distributed_trace + def list_anomaly_alert_configurations( + self, + detection_configuration_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> ItemPaged[AnomalyAlertConfiguration] + """Query all anomaly alert configurations for specific anomaly detection configuration. + + :param detection_configuration_id: anomaly detection configuration unique id. + :type detection_configuration_id: str + :return: Pageable of AnomalyAlertConfiguration + :rtype: ItemPaged[AnomalyAlertConfiguration] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_anomaly_alert_configuration.py + :start-after: [START list_anomaly_alert_configs] + :end-before: [END list_anomaly_alert_configs] + :language: python + :dedent: 4 + :caption: List all anomaly alert configurations for specific anomaly detection configuration + """ + return self._client.get_anomaly_alerting_configurations_by_anomaly_detection_configuration( + detection_configuration_id, + cls=kwargs.pop("cls", lambda confs: [ + AnomalyAlertConfiguration._from_generated(conf) for conf in confs + ]), + **kwargs + ) + + @distributed_trace + def list_metric_anomaly_detection_configurations( + self, + metric_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> ItemPaged[AnomalyDetectionConfiguration] + """Query all anomaly detection configurations for specific metric. + + :param metric_id: metric unique id. + :type metric_id: str + :return: Pageable of AnomalyDetectionConfiguration + :rtype: ItemPaged[AnomalyDetectionConfiguration] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_anomaly_detection_configuration.py + :start-after: [START list_anomaly_detection_configs] + :end-before: [END list_anomaly_detection_configs] + :language: python + :dedent: 4 + :caption: List all anomaly detection configurations for a specific metric + """ + return self._client.get_anomaly_detection_configurations_by_metric( + metric_id, + cls=kwargs.pop("cls", lambda confs: [ + AnomalyDetectionConfiguration._from_generated(conf) for conf in confs + ]), + **kwargs + ) + + @distributed_trace + def list_data_feed_ingestion_status( + self, + data_feed_id, # type: str + start_time, # type: datetime.datetime + end_time, # type: datetime.datetime + **kwargs # type: Any + ): + # type: (...) -> ItemPaged[DataFeedIngestionStatus] + """Get data ingestion status by data feed. + + :param str data_feed_id: The data feed unique id. + :param start_time: Required. the start point of time range to query data ingestion status. + :type start_time: ~datetime.datetime + :param end_time: Required. the end point of time range to query data ingestion status. + :type end_time: ~datetime.datetime + :keyword int skip: + :return: Pageable of DataFeedIngestionStatus + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.DataFeedIngestionStatus] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_ingestion.py + :start-after: [START list_data_feed_ingestion_status] + :end-before: [END list_data_feed_ingestion_status] + :language: python + :dedent: 4 + :caption: List the data feed ingestion statuses by data feed ID + """ + + skip = kwargs.pop("skip", None) + + return self._client.get_data_feed_ingestion_status( + data_feed_id=data_feed_id, + body={ + "start_time": start_time, + "end_time": end_time + }, + skip=skip, + **kwargs + ) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_metrics_advisor_client.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_metrics_advisor_client.py new file mode 100644 index 000000000000..5dacd7282013 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_metrics_advisor_client.py @@ -0,0 +1,716 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING +import datetime + +from azure.core.tracing.decorator import distributed_trace +from azure.core.pipeline import Pipeline +from azure.core.pipeline.policies import ( + UserAgentPolicy, + BearerTokenCredentialPolicy, + DistributedTracingPolicy, + RequestIdPolicy, + ContentDecodePolicy, + HttpLoggingPolicy, +) +from azure.core.pipeline.transport import RequestsTransport +from azure.core.exceptions import ClientAuthenticationError +from ._metrics_advisor_key_credential import MetricsAdvisorKeyCredential +from ._metrics_advisor_key_credential_policy import MetricsAdvisorKeyCredentialPolicy +from ._generated._configuration import AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2Configuration +from ._generated.models import ( + MetricFeedbackFilter, + DetectionSeriesQuery, + AlertingResultQuery, + DetectionAnomalyResultQuery, + AnomalyDimensionQuery, + DetectionIncidentResultQuery, + MetricDimensionQueryOptions, + MetricDataQueryOptions, + MetricSeriesQueryOptions, + EnrichmentStatusQueryOption, + SeriesIdentity, + FeedbackDimensionFilter, +) +from ._generated import AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2 +from ._helpers import convert_to_sub_feedback +from .models._models import ( + Incident, + Anomaly, + MetricSeriesData, + Alert, + IncidentRootCause +) +from ._version import SDK_MONIKER + +if TYPE_CHECKING: + from typing import cast, List, Union, Optional, Dict + from ._generated.models import ( + MetricFeedback, + SeriesResult, + EnrichmentStatus, + MetricSeriesItem as MetricSeriesDefinition, + TimeMode, + ) + from .models._models import ( + AnomalyFeedback, + ChangePointFeedback, + CommentFeedback, + PeriodFeedback + ) + + from azure.core.paging import ItemPaged + +class MetricsAdvisorClient(object): + """Represents an client that calls restful API of Azure Metrics Advisor service. + + :param str endpoint: Url to the Azure Metrics Advisor service endpoint + :param credential: credential Used to authenticate requests to the service. + :type credential: azure.ai.metricsadvisor.MetricsAdvisorKeyCredential + :keyword Pipeline pipeline: If omitted, the standard pipeline is used. + :keyword HttpTransport transport: If omitted, the standard pipeline is used. + :keyword list[HTTPPolicy] policies: If omitted, the standard pipeline is used. + + """ + def __init__(self, endpoint, credential, **kwargs): + # type: (str, MetricsAdvisorKeyCredential, dict) -> None + try: + if not endpoint.lower().startswith('http'): + endpoint = "https://" + endpoint + except AttributeError: + raise ValueError("Base URL must be a string.") + + if not credential: + raise ValueError("Missing credential") + + self._config = AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2Configuration(endpoint=endpoint, **kwargs) + self._credential = credential + self._config.user_agent_policy = UserAgentPolicy( + sdk_moniker=SDK_MONIKER, **kwargs + ) + + pipeline = kwargs.get("pipeline") + + if pipeline is None: + aad_mode = not isinstance(credential, MetricsAdvisorKeyCredential) + pipeline = self._create_pipeline( + credential=credential, + aad_mode=aad_mode, + endpoint=endpoint, + **kwargs) + + self._client = AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2( + endpoint=endpoint, pipeline=pipeline + ) + + def __repr__(self): + # type: () -> str + return "".format( + repr(self._endpoint) + )[:1024] + + def __enter__(self): + # type: () -> MetricsAdvisorClient + self._client.__enter__() # pylint:disable=no-member + return self + + def __exit__(self, *args): + # type: (*Any) -> None + self._client.__exit__(*args) # pylint:disable=no-member + + def close(self): + # type: () -> None + """Close the :class:`~azure.ai.metricsadvisor.MetricsAdvisorClient` session. + """ + return self._client.close() + + def _create_pipeline(self, credential, endpoint=None, aad_mode=False, **kwargs): + transport = kwargs.get('transport') + policies = kwargs.get('policies') + + if policies is None: # [] is a valid policy list + if aad_mode: + scope = endpoint.strip("/") + "/.default" + if hasattr(credential, "get_token"): + credential_policy = BearerTokenCredentialPolicy(credential, scope) + else: + raise TypeError("Please provide an instance from azure-identity " + "or a class that implement the 'get_token protocol") + else: + credential_policy = MetricsAdvisorKeyCredentialPolicy(credential) + policies = [ + RequestIdPolicy(**kwargs), + self._config.headers_policy, + self._config.user_agent_policy, + self._config.proxy_policy, + ContentDecodePolicy(**kwargs), + self._config.redirect_policy, + self._config.retry_policy, + credential_policy, + self._config.logging_policy, # HTTP request/response log + DistributedTracingPolicy(**kwargs), + self._config.http_logging_policy or HttpLoggingPolicy(**kwargs) + ] + + if not transport: + transport = RequestsTransport(**kwargs) + + return Pipeline(transport, policies) + + @distributed_trace + def add_feedback(self, feedback, **kwargs): + # type: (Union[AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback], dict) -> None + + """Create a new metric feedback. + + :param feedback: metric feedback. + :type feedback: ~azure.ai.metriscadvisor.models.AnomalyFeedback or + ~azure.ai.metriscadvisor.models.ChangePointFeedback or + ~azure.ai.metriscadvisor.models.CommentFeedback or + ~azure.ai.metriscadvisor.models.PeriodFeedback. + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_feedback.py + :start-after: [START add_feedback] + :end-before: [END add_feedback] + :language: python + :dedent: 4 + :caption: Add new feedback. + """ + error_map = { + 401: ClientAuthenticationError + } + + return self._client.create_metric_feedback( + body=feedback._to_generated(), + error_map=error_map, + **kwargs) + + @distributed_trace + def get_feedback(self, feedback_id, **kwargs): + # type: (str, dict) -> Union[AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback] + + """Get a metric feedback by its id. + + :param str feedback_id: the id of the feedback. + :return: The feedback object + :rtype: ~azure.ai.metriscadvisor.models.AnomalyFeedback or + ~azure.ai.metriscadvisor.models.ChangePointFeedback or + ~azure.ai.metriscadvisor.models.CommentFeedback or + ~azure.ai.metriscadvisor.models.PeriodFeedback. + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_feedback.py + :start-after: [START get_feedback] + :end-before: [END get_feedback] + :language: python + :dedent: 4 + :caption: Get a metric feedback by its id. + """ + error_map = { + 401: ClientAuthenticationError + } + + return convert_to_sub_feedback(self._client.get_metric_feedback( + feedback_id=feedback_id, + error_map=error_map, + **kwargs)) + + @distributed_trace + def list_feedbacks(self, metric_id, **kwargs): + # type: (str, dict) -> ItemPaged[Union[AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback]] + + """List feedback on the given metric. + + :param str metric_id: filter feedbacks by metric id + :keyword int skip: + :keyword dimension_key: filter specfic dimension name and values + :paramtype dimension_key: dict[str, str] + :keyword feedback_type: filter feedbacks by type. Possible values include: "Anomaly", + "ChangePoint", "Period", "Comment". + :paramtype feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :keyword ~datetime.datetime start_time: start time filter under chosen time mode. + :keyword ~datetime.datetime end_time: end time filter under chosen time mode. + :keyword time_mode: time mode to filter feedback. Possible values include: "MetricTimestamp", + "FeedbackCreatedTime". + :paramtype time_mode: str or ~azure.ai.metricsadvisor.models.FeedbackQueryTimeMode + :return: Pageable list of MetricFeedback + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.MetricFeedback] + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_feedback.py + :start-after: [START list_feedback] + :end-before: [END list_feedback] + :language: python + :dedent: 4 + :caption: List feedback on the given metric. + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + dimension_filter = None + dimension_key = kwargs.pop('dimension_key', None) + if dimension_key: + dimension_filter = FeedbackDimensionFilter(dimension=dimension_key) + feedback_type = kwargs.pop('feedback_type', None) + start_time = kwargs.pop('start_time', None) + end_time = kwargs.pop('end_time', None) + time_mode = kwargs.pop('time_mode', None) + feedback_filter = MetricFeedbackFilter( + metric_id=metric_id, + dimension_filter=dimension_filter, + feedback_type=feedback_type, + start_time=start_time, + end_time=end_time, + time_mode=time_mode, + ) + + return self._client.list_metric_feedbacks( + skip=skip, + body=feedback_filter, + cls=kwargs.pop("cls", lambda result: [ + convert_to_sub_feedback(x) for x in result + ]), + error_map=error_map, + **kwargs) + + @distributed_trace + def list_incident_root_causes(self, detection_configuration_id, incident_id, **kwargs): + # type: (str, str, dict) -> ItemPaged[IncidentRootCause] + + """Query root cause for incident. + + :param detection_configuration_id: anomaly detection configuration unique id. + :type detection_configuration_id: str + :param incident_id: incident id. + :type incident_id: str + :return: Pageable of root cause for incident + :rtype: ItemPaged[~azure.ai.metriscadvisor.models.IncidentRootCause] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + return self._client.get_root_cause_of_incident_by_anomaly_detection_configuration( + configuration_id=detection_configuration_id, + incident_id=incident_id, + error_map=error_map, + cls=kwargs.pop("cls", lambda result: [ + IncidentRootCause._from_generated(x) for x in result + ]), + **kwargs + ) + + @distributed_trace + def list_metric_enriched_series_data(self, detection_configuration_id, series, start_time, end_time, **kwargs): + # type: (str, Union[List[SeriesIdentity], List[Dict[str, str]]], datetime, datetime, dict) -> ItemPaged[SeriesResult] + """Query series enriched by anomaly detection. + + :param str detection_configuration_id: anomaly alerting configuration unique id. + :param series: List of dimensions specified for series. + :type series: ~azure.ai.metricsadvisor.models.SeriesIdentity or list[dict[str, str]] + :param ~datetime.datetime start_time: start time filter under chosen time mode. + :param ~datetime.datetime end_time: end time filter under chosen time mode. + :return: Pageable of SeriesResult + :rtype: ItemPaged[~azure.ai.metricsadvisor.models.SeriesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + detection_series_query = DetectionSeriesQuery( + start_time=start_time, + end_time=end_time, + series=[ + SeriesIdentity(dimension=dimension) + for dimension in series + if isinstance(dimension, dict) + ] or series, + ) + + return self._client.get_series_by_anomaly_detection_configuration( + configuration_id=detection_configuration_id, + body=detection_series_query, + error_map=error_map, + **kwargs) + + @distributed_trace + def list_alerts_for_alert_configuration(self, alert_configuration_id, start_time, end_time, time_mode, **kwargs): + # type: (str, datetime, datetime, Union[str, TimeMode], dict) -> ItemPaged[Alert] + + """Query alerts under anomaly alert configuration. + + :param alert_configuration_id: anomaly alert configuration unique id. + :type alert_configuration_id: str + :param ~datetime.datetime start_time: start time. + :param ~datetime.datetime end_time: end time. + :param time_mode: time mode. Possible values include: "AnomalyTime", "CreatedTime", + "ModifiedTime". + :type time_mode: str or ~azure.ai.metricsadvisor.models.TimeMode + :keyword int skip: + :return: Alerts under anomaly alert configuration. + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.Alert] + :raises: ~azure.core.exceptions.HttpResponseError + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_anomaly_alert_configuration.py + :start-after: [START list_alerts_for_alert_config] + :end-before: [END list_alerts_for_alert_config] + :language: python + :dedent: 4 + :caption: Query anomaly detection results. + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + + alerting_result_query = AlertingResultQuery( + start_time=start_time, + end_time=end_time, + time_mode=time_mode, + ) + + return self._client.get_alerts_by_anomaly_alerting_configuration( + configuration_id=alert_configuration_id, + skip=skip, + body=alerting_result_query, + error_map=error_map, + cls=kwargs.pop("cls", lambda alerts: [Alert._from_generated(alert) for alert in alerts]), + **kwargs) + + @distributed_trace + def list_anomalies_for_alert(self, alert_configuration_id, alert_id, **kwargs): + # type: (str, str, dict) -> ItemPaged[Anomaly] + + """Query anomalies under a specific alert. + + :param alert_configuration_id: anomaly detection configuration unique id. + :type alert_configuration_id: str + :param alert_id: alert id. + :type alert_id: str + :keyword int skip: + :return: Anomalies under a specific alert. + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.Anomaly] + :raises: ~azure.core.exceptions.HttpResponseError + .. admonition:: Example: + + .. literalinclude:: ../samples/sample_anomaly_alert_configuration.py + :start-after: [START list_anomalies_for_alert] + :end-before: [END list_anomalies_for_alert] + :language: python + :dedent: 4 + :caption: Query anomalies using alert id. + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + + return self._client.get_anomalies_from_alert_by_anomaly_alerting_configuration( + configuration_id=alert_configuration_id, + alert_id=alert_id, + skip=skip, + cls=lambda objs: [Anomaly._from_generated(x) for x in objs], + error_map=error_map, + **kwargs) + + @distributed_trace + def list_anomalies_for_detection_configuration(self, detection_configuration_id, start_time, end_time, **kwargs): + # type: (str, datetime, datetime, dict) -> ItemPaged[Anomaly] + + """Query anomalies under anomaly detection configuration. + + :param detection_configuration_id: anomaly detection configuration unique id. + :type detection_configuration_id: str + :param ~datetime.datetime start_time: start time filter under chosen time mode. + :param ~datetime.datetime end_time: end time filter under chosen time mode. + :keyword int skip: + :keyword filter: + :paramtype filter: ~azure.ai.metricsadvisor.models.DetectionAnomalyFilterCondition + :return: Anomalies under anomaly detection configuration. + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metricsadvisor.models.Anomaly] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + filter = kwargs.pop('filter', None) + detection_anomaly_result_query = DetectionAnomalyResultQuery( + start_time=start_time, + end_time=end_time, + filter=filter, + ) + + return self._client.get_anomalies_by_anomaly_detection_configuration( + configuration_id=detection_configuration_id, + skip=skip, + body=detection_anomaly_result_query, + cls=lambda objs: [Anomaly._from_generated(x) for x in objs], + error_map=error_map, + **kwargs) + + @distributed_trace + def list_dimension_values_for_detection_configuration( + self, detection_configuration_id, + dimension_name, + start_time, + end_time, + **kwargs + ): + # type: (str, str, datetime, datetime, dict) -> ItemPaged[str] + + """Query dimension values of anomalies. + + :param detection_configuration_id: anomaly detection configuration unique id. + :type detection_configuration_id: str + :param str dimension_name: dimension to query. + :param ~datetime.datetime start_time: start time filter under chosen time mode. + :param ~datetime.datetime end_time: end time filter under chosen time mode. + :keyword int skip: + :keyword dimension_name: str + :paramtype dimension_filter: ~azure.ai.metricsadvisor.models.DimensionGroupIdentity + :return: Dimension values of anomalies. + :rtype: ~azure.core.paging.ItemPaged[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + dimension_filter = kwargs.pop('dimension_filter', None) + anomaly_dimension_query = AnomalyDimensionQuery( + start_time=start_time, + end_time=end_time, + dimension_name=dimension_name, + dimension_filter=dimension_filter, + ) + + return self._client.get_dimension_of_anomalies_by_anomaly_detection_configuration( + configuration_id=detection_configuration_id, + skip=skip, + body=anomaly_dimension_query, + error_map=error_map, + **kwargs) + + @distributed_trace + def list_incidents_for_alert(self, alert_configuration_id, alert_id, **kwargs): + # type: (str, str, dict) -> ItemPaged[Incident] + + """Query incidents under a specific alert. + + :param alert_configuration_id: anomaly alerting configuration unique id. + :type alert_configuration_id: str + :param alert_id: alert id. + :type alert_id: str + :keyword int skip: + :return: Incidents under a specific alert. + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metriscadvisor.models.Incident] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + + return self._client.get_incidents_from_alert_by_anomaly_alerting_configuration( + configuration_id=alert_configuration_id, + alert_id=alert_id, + skip=skip, + cls=lambda objs: [Incident._from_generated(x) for x in objs], + error_map=error_map, + **kwargs) + + @distributed_trace + def list_incidents_for_detection_configuration(self, detection_configuration_id, start_time, end_time, **kwargs): + # type: (str, datetime, datetime, dict) -> ItemPaged[Incident] + + """Query incidents under a specific alert. + + :param detection_configuration_id: anomaly detection configuration unique id. + :type detection_configuration_id: str + :param ~datetime.datetime start_time: start time filter under chosen time mode. + :param ~datetime.datetime end_time: end time filter under chosen time mode. + :keyword filter: + :paramtype filter: ~azure.ai.metricsadvisor.models.DetectionIncidentFilterCondition + :return: Incidents under a specific alert. + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metriscadvisor.models.Incident] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + filter = kwargs.pop('filter', None) + + detection_incident_result_query = DetectionIncidentResultQuery( + start_time=start_time, + end_time=end_time, + filter=filter, + ) + + return self._client.get_incidents_by_anomaly_detection_configuration( + configuration_id=detection_configuration_id, + body=detection_incident_result_query, + cls=lambda objs: [Incident._from_generated(x) for x in objs], + error_map=error_map, + **kwargs) + + @distributed_trace + def list_metric_dimension_values(self, metric_id, dimension_name, **kwargs): + # type: (str, str, dict) -> ItemPaged[str] + + """List dimension from certain metric. + + :param metric_id: metric unique id. + :type metric_id: str + :param dimension_name: the dimension name + :type dimension_name: str + :keyword int skip: + :keyword dimension_value_filter: dimension value to be filtered. + :paramtype dimension_value_filter: str + :return: Dimension from certain metric. + :rtype: ~azure.core.paging.ItemPaged[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + dimension_value_filter = kwargs.pop('dimension_value_filter', None) + + metric_dimension_query_options = MetricDimensionQueryOptions( + dimension_name=dimension_name, + dimension_value_filter=dimension_value_filter, + ) + + return self._client.get_metric_dimension( + metric_id=metric_id, + body=metric_dimension_query_options, + skip=skip, + error_map=error_map, + **kwargs) + + @distributed_trace + def list_metrics_series_data(self, metric_id, start_time, end_time, filter, **kwargs): + # type: (str, datetime, datetime, List[Dict[str, str]], dict) -> ItemPaged[MetricSeriesData] + + """Get time series data from metric. + + :param metric_id: metric unique id. + :type metric_id: str + :param ~datetime.datetime start_time: start time filter under chosen time mode. + :param ~datetime.datetime end_time: end time filter under chosen time mode. + :param filter: query specific series. + :type filter: list[dict[str, str]] + :return: Time series data from metric. + :rtype: ItemPaged[~azure.ai.metriscadvisor.models.MetricSeriesData] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + metric_data_query_options = MetricDataQueryOptions( + start_time=start_time, + end_time=end_time, + series=filter, + ) + + return self._client.get_metric_data( + metric_id=metric_id, + body=metric_data_query_options, + error_map=error_map, + cls=kwargs.pop("cls", lambda result: [MetricSeriesData._from_generated(series) for series in result]), + **kwargs) + + @distributed_trace + def list_metric_series_definitions(self, metric_id, active_since, **kwargs): + # type: (str, datetime, dict) -> ItemPaged[MetricSeriesDefinition] + + """List series (dimension combinations) from metric. + + :param metric_id: metric unique id. + :type metric_id: str + :param active_since: Required. query series ingested after this time, the format should be + yyyy-MM-ddTHH:mm:ssZ. + :type active_since: ~datetime.datetime + :keyword int skip: + :keyword ~datetime.datetime active_since: query series ingested after this time, the format should be + yyyy-MM-ddTHH:mm:ssZ. + :keyword dimension_filter: filter specfic dimension name and values. + :paramtype dimension_filter: dict[str, list[str]] + :return: Series (dimension combinations) from metric. + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metriscadvisor.models.MetricSeriesDefinition] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + dimension_filter = kwargs.pop('dimension_filter', None) + + metric_series_query_options = MetricSeriesQueryOptions( + active_since=active_since, + dimension_filter=dimension_filter, + ) + + return self._client.get_metric_series( + metric_id=metric_id, + body=metric_series_query_options, + skip=skip, + error_map=error_map, + **kwargs) + + @distributed_trace + def list_metric_enrichment_status(self, metric_id, start_time, end_time, **kwargs): + # type: (str, datetime, datetime, dict) -> ItemPaged[EnrichmentStatus] + + """Query anomaly detection status. + + :param metric_id: filter feedbacks by metric id. + :type metric_id: str + :param ~datetime.datetime start_time: start time filter under chosen time mode. + :param ~datetime.datetime end_time: end time filter under chosen time mode. + :keyword int skip: + :return: Anomaly detection status. + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.metriscadvisor.models.EnrichmentStatus] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + enrichment_status_query_option = EnrichmentStatusQueryOption( + start_time=start_time, + end_time=end_time, + ) + + return self._client.get_enrichment_status_by_metric( + metric_id=metric_id, + skip=skip, + body=enrichment_status_query_option, + error_map=error_map, + **kwargs) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_metrics_advisor_key_credential.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_metrics_advisor_key_credential.py new file mode 100644 index 000000000000..b595f02f9be6 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_metrics_advisor_key_credential.py @@ -0,0 +1,22 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +import six + +class MetricsAdvisorKeyCredential(object): + """Credential type used for authenticating to an Azure Metrics Advisor service. + + :param str subscription_key: The subscription key + :param str api_key: The api key + :raises: TypeError + """ + + def __init__(self, subscription_key, api_key): + # type: (str, str) -> None + if not (isinstance(subscription_key, six.string_types) and isinstance(api_key, six.string_types)): + raise TypeError("key must be a string.") + self.subscription_key = subscription_key # type: str + self.api_key = api_key # type: str diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_metrics_advisor_key_credential_policy.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_metrics_advisor_key_credential_policy.py new file mode 100644 index 000000000000..2e4879c9195d --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_metrics_advisor_key_credential_policy.py @@ -0,0 +1,28 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +from ._metrics_advisor_key_credential import MetricsAdvisorKeyCredential +from azure.core.pipeline.policies import SansIOHTTPPolicy + +_API_KEY_HEADER_NAME = "Ocp-Apim-Subscription-Key" +_X_API_KEY_HEADER_NAME = "x-api-key" + +class MetricsAdvisorKeyCredentialPolicy(SansIOHTTPPolicy): + """Adds a key header for the provided credential. + + :param credential: The credential used to authenticate requests. + :type credential: ~azure.core.credentials.AzureKeyCredential + :param str name: The name of the key header used for the credential. + :raises: ValueError or TypeError + """ + def __init__(self, credential, **kwargs): # pylint: disable=unused-argument + # type: (MetricsAdvisorKeyCredential, Any) -> None + super(MetricsAdvisorKeyCredentialPolicy, self).__init__() + self._credential = credential + + def on_request(self, request): + request.http_request.headers[_API_KEY_HEADER_NAME] = self._credential.subscription_key + request.http_request.headers[_X_API_KEY_HEADER_NAME] = self._credential.api_key diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_version.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_version.py new file mode 100644 index 000000000000..3b12eb9165bd --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/_version.py @@ -0,0 +1,9 @@ +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +VERSION = "1.0.0b1" + +SDK_MONIKER = "ai-metricsadvisor/{}".format(VERSION) # type: str diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/aio/__init__.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/aio/__init__.py new file mode 100644 index 000000000000..ae0f0e4c7d91 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/aio/__init__.py @@ -0,0 +1,13 @@ +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +from ._metrics_advisor_client_async import MetricsAdvisorClient +from ._metrics_advisor_administration_client_async import MetricsAdvisorAdministrationClient + +__all__ = ( + "MetricsAdvisorClient", + "MetricsAdvisorAdministrationClient" +) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/aio/_metrics_advisor_administration_client_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/aio/_metrics_advisor_administration_client_async.py new file mode 100644 index 000000000000..48da04afc342 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/aio/_metrics_advisor_administration_client_async.py @@ -0,0 +1,1082 @@ +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +import six +import datetime +from typing import ( + Any, + List, + Union +) + +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async +from azure.core.async_paging import AsyncItemPaged +from .._generated.aio import AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2 as _ClientAsync +from .._generated.models import AnomalyAlertingConfiguration as _AnomalyAlertingConfiguration +from .._generated.models import AnomalyDetectionConfiguration as _AnomalyDetectionConfiguration +from .._generated.models import IngestionStatus as DataFeedIngestionStatus +from .._version import SDK_MONIKER +from .._metrics_advisor_key_credential import MetricsAdvisorKeyCredential +from .._metrics_advisor_key_credential_policy import MetricsAdvisorKeyCredentialPolicy +from .._helpers import ( + convert_to_generated_data_feed_type, + construct_alert_config_dict, + construct_detection_config_dict, + construct_hook_dict, + construct_data_feed_dict +) +from ..models import ( + DataFeed, + EmailHook, + WebHook, + AnomalyAlertConfiguration, + AnomalyDetectionConfiguration, + DataFeedIngestionProgress, + DataFeedGranularityType, + MetricAlertConfiguration, + DataFeedGranularity, + DataFeedSchema, + DataFeedIngestionSettings, + Hook, + MetricDetectionCondition +) +from .._metrics_advisor_administration_client import ( + DATA_FEED, + DATA_FEED_PATCH, + DataFeedSourceUnion +) + + +class MetricsAdvisorAdministrationClient(object): + """MetricsAdvisorAdministrationClient is used to create and manage data feeds. + + :param str endpoint: Supported Cognitive Services endpoints (protocol and hostname, + for example: https://:code:``.cognitiveservices.azure.com). + :param credential: An instance of ~azure.ai.metricsadvisor.MetricsAdvisorKeyCredential. + Requires both subscription key and API key. + :type credential: ~azure.ai.metricsadvisor.MetricsAdvisorKeyCredential + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_authentication_async.py + :start-after: [START administration_client_with_metrics_advisor_credential_async] + :end-before: [END administration_client_with_metrics_advisor_credential_async] + :language: python + :dedent: 4 + :caption: Authenticate MetricsAdvisorAdministrationClient with a MetricsAdvisorKeyCredential + """ + def __init__(self, endpoint: str, credential: MetricsAdvisorKeyCredential, **kwargs: Any) -> None: + + self._client = _ClientAsync( + endpoint=endpoint, + sdk_moniker=SDK_MONIKER, + authentication_policy=MetricsAdvisorKeyCredentialPolicy(credential), + **kwargs + ) + + async def __aenter__(self) -> "MetricsAdvisorAdministrationClient": + await self._client.__aenter__() + return self + + async def __aexit__(self, *args: "Any") -> None: + await self._client.__aexit__(*args) + + async def close(self) -> None: + """Close the :class:`~azure.ai.metricsadvisor.aio.MetricsAdvisorAdministrationClient` session. + """ + await self._client.__aexit__() + + @distributed_trace_async + async def create_anomaly_alert_configuration( + self, name: str, + metric_alert_configurations: List[MetricAlertConfiguration], + hook_ids: List[str], + **kwargs: Any + ) -> AnomalyAlertConfiguration: + """Create an anomaly alert configuration. + + :param str name: Name for the anomaly alert configuration. + :param metric_alert_configurations: Anomaly alert configurations. + :type metric_alert_configurations: list[~azure.ai.metricsadvisor.models.MetricAlertConfiguration] + :param list[str] hook_ids: Unique hook IDs. + :keyword cross_metrics_operator: Cross metrics operator should be specified when setting up multiple metric + alert configurations. Possible values include: "AND", "OR", "XOR". + :paramtype cross_metrics_operator: str or + ~azure.ai.metricsadvisor.models.MetricAnomalyAlertConfigurationsOperator + :keyword str description: Anomaly alert configuration description. + :return: AnomalyAlertConfiguration + :rtype: ~azure.ai.metricsadvisor.models.AnomalyAlertConfiguration + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_anomaly_alert_configuration_async.py + :start-after: [START create_anomaly_alert_config_async] + :end-before: [END create_anomaly_alert_config_async] + :language: python + :dedent: 4 + :caption: Create an anomaly alert configuration + """ + + cross_metrics_operator = kwargs.pop("cross_metrics_operator", None) + response_headers = await self._client.create_anomaly_alerting_configuration( + _AnomalyAlertingConfiguration( + name=name, + metric_alerting_configurations=[ + config._to_generated() for config in metric_alert_configurations + ], + hook_ids=hook_ids, + cross_metrics_operator=cross_metrics_operator, + description=kwargs.pop("description", None) + ), + cls=lambda pipeline_response, _, response_headers: response_headers, + **kwargs + ) + + config_id = response_headers["Location"].split("configurations/")[1] + return await self.get_anomaly_alert_configuration(config_id) + + @distributed_trace_async + async def create_data_feed( + self, name: str, + source: DataFeedSourceUnion, + granularity: Union[str, DataFeedGranularityType, DataFeedGranularity], + schema: Union[List[str], DataFeedSchema], + ingestion_settings: Union[datetime.datetime, DataFeedIngestionSettings], + **kwargs: Any + ) -> DataFeed: + """Create a new data feed. + + :param str name: Name for the data feed. + :param source: The source of the data feed + :type source: Union[AzureApplicationInsightsDataFeed, AzureBlobDataFeed, AzureCosmosDBDataFeed, + AzureDataExplorerDataFeed, AzureDataLakeStorageGen2DataFeed, AzureTableDataFeed, HttpRequestDataFeed, + InfluxDBDataFeed, MySqlDataFeed, PostgreSqlDataFeed, SQLServerDataFeed, MongoDBDataFeed, + ElasticsearchDataFeed] + :param granularity: Granularity type. If using custom granularity, you must instantiate a DataFeedGranularity. + :type granularity: Union[str, ~azure.ai.metricsadvisor.models.DataFeedGranularityType, + ~azure.ai.metricsadvisor.models.DataFeedGranularity] + :param schema: Data feed schema. Can be passed as a list of metric names as strings or as a DataFeedSchema + object if additional configuration is needed. + :type schema: Union[list[str], ~azure.ai.metricsadvisor.models.DataFeedSchema] + :param ingestion_settings: The data feed ingestions settings. Can be passed as a datetime to use for the + ingestion begin time or as a DataFeedIngestionSettings object if additional configuration is needed. + :type ingestion_settings: Union[~datetime.datetime, ~azure.ai.metricsadvisor.models.DataFeedIngestionSettings] + :keyword options: Data feed options. + :paramtype options: ~azure.ai.metricsadvisor.models.DataFeedOptions + :return: DataFeed + :rtype: ~azure.ai.metricsadvisor.models.DataFeed + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_data_feeds_async.py + :start-after: [START create_data_feed_async] + :end-before: [END create_data_feed_async] + :language: python + :dedent: 4 + :caption: Create a data feed + """ + + options = kwargs.pop("options", None) + data_feed_type = DATA_FEED[source.data_source_type] + data_feed_detail = convert_to_generated_data_feed_type( + generated_feed_type=data_feed_type, + name=name, + source=source, + granularity=granularity, + schema=schema, + ingestion_settings=ingestion_settings, + options=options + ) + + response_headers = await self._client.create_data_feed( + data_feed_detail, + cls=lambda pipeline_response, _, response_headers: response_headers, + **kwargs + ) + data_feed_id = response_headers["Location"].split("dataFeeds/")[1] + return await self.get_data_feed(data_feed_id) + + @distributed_trace_async + async def create_hook( + self, name: str, + hook: Union[EmailHook, WebHook], + **kwargs: Any + ) -> Union[Hook, EmailHook, WebHook]: + """Create a new email or web hook. + + :param str name: The name for the hook. + :param hook: An email or web hook + :type hook: Union[~azure.ai.metricsadvisor.models.EmailHook, ~azure.ai.metricsadvisor.models.WebHook] + :return: EmailHook or WebHook + :rtype: Union[~azure.ai.metricsadvisor.models.Hook, ~azure.ai.metricsadvisor.models.EmailHook, + ~azure.ai.metricsadvisor.models.WebHook] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_hooks_async.py + :start-after: [START create_hook_async] + :end-before: [END create_hook_async] + :language: python + :dedent: 4 + :caption: Create a hook + """ + + hook_request = None + if hook.hook_type == "Email": + hook_request = hook._to_generated(name) + + if hook.hook_type == "Webhook": + hook_request = hook._to_generated(name) + + response_headers = await self._client.create_hook( + hook_request, + cls=lambda pipeline_response, _, response_headers: response_headers, + **kwargs + ) + hook_id = response_headers["Location"].split("hooks/")[1] + return await self.get_hook(hook_id) + + @distributed_trace_async + async def create_metric_anomaly_detection_configuration( + self, name: str, + metric_id: str, + whole_series_detection_condition: MetricDetectionCondition, + **kwargs: Any + ) -> AnomalyDetectionConfiguration: + """Create anomaly detection configuration. + + :param str name: The name for the anomaly detection configuration + :param str metric_id: Required. metric unique id. + :param whole_series_detection_condition: Required. + :type whole_series_detection_condition: ~azure.ai.metricsadvisor.models.MetricDetectionCondition + :keyword str description: anomaly detection configuration description. + :keyword series_group_detection_conditions: detection configuration for series group. + :paramtype series_group_detection_conditions: + list[~azure.ai.metricsadvisor.models.MetricSeriesGroupDetectionCondition] + :keyword series_detection_conditions: detection configuration for specific series. + :paramtype series_detection_conditions: + list[~azure.ai.metricsadvisor.models.MetricSingleSeriesDetectionCondition] + :return: AnomalyDetectionConfiguration + :rtype: ~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_anomaly_detection_configuration_async.py + :start-after: [START create_anomaly_detection_config_async] + :end-before: [END create_anomaly_detection_config_async] + :language: python + :dedent: 4 + :caption: Create an anomaly detection configuration + """ + description = kwargs.pop("description", None) + series_group_detection_conditions = kwargs.pop("series_group_detection_conditions", None) + series_detection_conditions = kwargs.pop("series_detection_conditions", None) + config = _AnomalyDetectionConfiguration( + name=name, + metric_id=metric_id, + description=description, + whole_metric_configuration=whole_series_detection_condition._to_generated(), + dimension_group_override_configurations=[ + group._to_generated() for group in series_group_detection_conditions + ] if series_group_detection_conditions else None, + series_override_configurations=[ + series._to_generated() for series in series_detection_conditions] + if series_detection_conditions else None, + ) + + response_headers = await self._client.create_anomaly_detection_configuration( + config, + cls=lambda pipeline_response, _, response_headers: response_headers, + **kwargs + ) + config_id = response_headers["Location"].split("configurations/")[1] + return await self.get_metric_anomaly_detection_configuration(config_id) + + @distributed_trace_async + async def get_data_feed(self, data_feed_id: str, **kwargs: Any) -> DataFeed: + """Get a data feed by its id. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :return: DataFeed + :rtype: azure.ai.metricsadvisor.models.DataFeed + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_data_feeds_async.py + :start-after: [START get_data_feed_async] + :end-before: [END get_data_feed_async] + :language: python + :dedent: 4 + :caption: Get a data feed by its ID + """ + + data_feed = await self._client.get_data_feed_by_id( + data_feed_id, + **kwargs + ) + return DataFeed._from_generated(data_feed) + + @distributed_trace_async + async def get_anomaly_alert_configuration( + self, alert_configuration_id: str, + **kwargs: Any + ) -> AnomalyAlertConfiguration: + """Get a single anomaly alert configuration. + + :param alert_configuration_id: anomaly alert configuration unique id. + :type alert_configuration_id: str + :return: AnomalyAlertConfiguration + :rtype: ~azure.ai.metricsadvisor.models.AnomalyAlertConfiguration + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_anomaly_alert_configuration_async.py + :start-after: [START get_anomaly_alert_config_async] + :end-before: [END get_anomaly_alert_config_async] + :language: python + :dedent: 4 + :caption: Get a single anomaly alert configuration by its ID + """ + + config = await self._client.get_anomaly_alerting_configuration(alert_configuration_id, **kwargs) + return AnomalyAlertConfiguration._from_generated(config) + + @distributed_trace_async + async def get_metric_anomaly_detection_configuration( + self, detection_configuration_id: str, + **kwargs: Any + ) -> AnomalyDetectionConfiguration: + """Get a single anomaly detection configuration. + + :param detection_configuration_id: anomaly detection configuration unique id. + :type detection_configuration_id: str + :return: AnomalyDetectionConfiguration + :rtype: ~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_anomaly_detection_configuration_async.py + :start-after: [START get_anomaly_detection_config_async] + :end-before: [END get_anomaly_detection_config_async] + :language: python + :dedent: 4 + :caption: Get a single anomaly detection configuration by its ID + """ + + config = await self._client.get_anomaly_detection_configuration(detection_configuration_id, **kwargs) + return AnomalyDetectionConfiguration._from_generated(config) + + @distributed_trace_async + async def get_hook( + self, + hook_id: str, + **kwargs: Any + ) -> Union[Hook, EmailHook, WebHook]: + """Get a web or email hook by its id. + + :param hook_id: Hook unique ID. + :type hook_id: str + :return: EmailHook or Webhook + :rtype: Union[~azure.ai.metricsadvisor.models.Hook, ~azure.ai.metricsadvisor.models.EmailHook, + ~azure.ai.metricsadvisor.models.WebHook] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_hooks_async.py + :start-after: [START get_hook_async] + :end-before: [END get_hook_async] + :language: python + :dedent: 4 + :caption: Get a hook by its ID + """ + + hook = await self._client.get_hook(hook_id, **kwargs) + if hook.hook_type == "Email": + return EmailHook._from_generated(hook) + return WebHook._from_generated(hook) + + @distributed_trace_async + async def get_data_feed_ingestion_progress( + self, + data_feed_id: str, + **kwargs: Any + ) -> DataFeedIngestionProgress: + """Get last successful data ingestion job timestamp by data feed. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :return: DataFeedIngestionProgress, containing latest_success_timestamp + and latest_active_timestamp + :rtype: ~azure.ai.metricsadvisor.models.DataFeedIngestionProgress + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_ingestion_async.py + :start-after: [START get_data_feed_ingestion_progress_async] + :end-before: [END get_data_feed_ingestion_progress_async] + :language: python + :dedent: 4 + :caption: Get the progress of data feed ingestion + """ + ingestion_process = await self._client.get_ingestion_progress(data_feed_id, **kwargs) + return DataFeedIngestionProgress._from_generated(ingestion_process) + + @distributed_trace_async + async def refresh_data_feed_ingestion( + self, + data_feed_id: str, + start_time: datetime.datetime, + end_time: datetime.datetime, + **kwargs: Any + ) -> None: + """Refreshes data ingestion by data feed to backfill data. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :param start_time: The start point of time range to refreshes data ingestion. + :type start_time: ~datetime.datetime + :param end_time: The end point of time range to refreshes data ingestion. + :type end_time: ~datetime.datetime + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_ingestion_async.py + :start-after: [START refresh_data_feed_ingestion_async] + :end-before: [END refresh_data_feed_ingestion_async] + :language: python + :dedent: 4 + :caption: Refresh data feed ingestion over a period of time + """ + await self._client.reset_data_feed_ingestion_status( + data_feed_id, + body={ + "start_time": start_time, + "end_time": end_time + }, + **kwargs + ) + + @distributed_trace_async + async def delete_anomaly_alert_configuration(self, alert_configuration_id: str, **kwargs: Any) -> None: + """Delete an anomaly alert configuration by its ID. + + :param alert_configuration_id: anomaly alert configuration unique id. + :type alert_configuration_id: str + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_anomaly_alert_configuration_async.py + :start-after: [START delete_anomaly_alert_config_async] + :end-before: [END delete_anomaly_alert_config_async] + :language: python + :dedent: 4 + :caption: Delete an anomaly alert configuration by its ID + """ + + await self._client.delete_anomaly_alerting_configuration(alert_configuration_id, **kwargs) + + @distributed_trace_async + async def delete_metric_anomaly_detection_configuration( + self, detection_configuration_id: str, + **kwargs: Any + ) -> None: + """Delete an anomaly detection configuration by its ID. + + :param detection_configuration_id: anomaly detection configuration unique id. + :type detection_configuration_id: str + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_anomaly_detection_configuration_async.py + :start-after: [START delete_anomaly_detection_config_async] + :end-before: [END delete_anomaly_detection_config_async] + :language: python + :dedent: 4 + :caption: Delete an anomaly detection configuration by its ID + """ + + await self._client.delete_anomaly_detection_configuration(detection_configuration_id, **kwargs) + + @distributed_trace_async + async def delete_data_feed(self, data_feed_id: str, **kwargs: Any) -> None: + """Delete a data feed by its ID. + + :param data_feed_id: The data feed unique id. + :type data_feed_id: str + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_data_feeds_async.py + :start-after: [START delete_data_feed_async] + :end-before: [END delete_data_feed_async] + :language: python + :dedent: 4 + :caption: Delete a data feed by its ID + """ + + await self._client.delete_data_feed(data_feed_id, **kwargs) + + @distributed_trace_async + async def delete_hook(self, hook_id: str, **kwargs: Any) -> None: + """Delete a web or email hook by its ID. + + :param hook_id: Hook unique ID. + :type hook_id: str + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_hooks_async.py + :start-after: [START delete_hook_async] + :end-before: [END delete_hook_async] + :language: python + :dedent: 4 + :caption: Delete a hook by its ID + """ + + await self._client.delete_hook(hook_id, **kwargs) + + @distributed_trace_async + async def update_data_feed( + self, data_feed: Union[str, DataFeed], + **kwargs: Any + ) -> DataFeed: + """Update a data feed. Either pass the entire DataFeed object with the chosen updates + or the ID to your data feed with updates passed via keyword arguments. If you pass both + the DataFeed object and keyword arguments, the keyword arguments will take precedence. + + :param data_feed: The data feed with updates or the data feed ID. + :type data_feed: ~azure.ai.metricsadvisor.models.DataFeed or str + :keyword str name: The name to update the data feed. + :keyword str timestamp_column: User-defined timestamp column name. + :keyword ~datetime.datetime ingestion_begin_time: Ingestion start time. + :keyword int data_source_request_concurrency: The max concurrency of data ingestion queries against + user data source. Zero (0) means no limitation. + :keyword int ingestion_retry_delay: The min retry interval for failed data ingestion tasks, in seconds. + :keyword int ingestion_start_offset: The time that the beginning of data ingestion task will delay + for every data slice according to this offset, in seconds. + :keyword int stop_retry_after: Stop retry data ingestion after the data slice first + schedule time in seconds. + :keyword str rollup_identification_value: The identification value for the row of calculated + all-up value. + :keyword rollup_type: Mark if the data feed needs rollup. Possible values include: "NoRollup", + "AutoRollup", "AlreadyRollup". Default value: "AutoRollup". + :paramtype roll_up_type: str or ~azure.ai.metricsadvisor.models.DataFeedRollupType + :keyword list[str] auto_rollup_group_by_column_names: Roll up columns. + :keyword rollup_method: Roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :paramtype rollup_method: str or ~azure.ai.metricsadvisor.models.DataFeedAutoRollupMethod + :keyword fill_type: The type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :paramtype fill_type: str or ~azure.ai.metricsadvisor.models.DataSourceMissingDataPointFillType + :keyword float custom_fill_value: The value of fill missing point for anomaly detection + if "CustomValue" fill type is specified. + :keyword list[str] admins: Data feed administrators. + :keyword str data_feed_description: Data feed description. + :keyword list[str] viewers: Data feed viewer. + :keyword access_mode: Data feed access mode. Possible values include: + "Private", "Public". Default value: "Private". + :paramtype access_mode: str or ~azure.ai.metricsadvisor.models.DataFeedAccessMode + :keyword str action_link_template: action link for alert. + :keyword status: Data feed status. Possible values include: "Active", "Paused". + :paramtype status: str or ~azure.ai.metricsadvisor.models.DataFeedStatus + :keyword source: The source of the data feed for update + :paramtype source: Union[AzureApplicationInsightsDataFeed, AzureBlobDataFeed, AzureCosmosDBDataFeed, + AzureDataExplorerDataFeed, AzureDataLakeStorageGen2DataFeed, AzureTableDataFeed, HttpRequestDataFeed, + InfluxDBDataFeed, MySqlDataFeed, PostgreSqlDataFeed, SQLServerDataFeed, MongoDBDataFeed, + ElasticsearchDataFeed] + :return: DataFeed + :rtype: ~azure.ai.metricsadvisor.models.DataFeed + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_data_feeds_async.py + :start-after: [START update_data_feed_async] + :end-before: [END update_data_feed_async] + :language: python + :dedent: 4 + :caption: Update an existing data feed + """ + + unset = object() + update_kwargs = {} + update_kwargs["dataFeedName"] = kwargs.pop("name", unset) + update_kwargs["dataFeedDescription"] = kwargs.pop("data_feed_description", unset) + update_kwargs["timestampColumn"] = kwargs.pop("timestamp_column", unset) + update_kwargs["dataStartFrom"] = kwargs.pop("ingestion_begin_time", unset) + update_kwargs["startOffsetInSeconds"] = kwargs.pop("ingestion_start_offset", unset) + update_kwargs["maxConcurrency"] = kwargs.pop("data_source_request_concurrency", unset) + update_kwargs["minRetryIntervalInSeconds"] = kwargs.pop("ingestion_retry_delay", unset) + update_kwargs["stopRetryAfterInSeconds"] = kwargs.pop("stop_retry_after", unset) + update_kwargs["needRollup"] = kwargs.pop("rollup_type", unset) + update_kwargs["rollUpMethod"] = kwargs.pop("rollup_method", unset) + update_kwargs["rollUpColumns"] = kwargs.pop("auto_rollup_group_by_column_names", unset) + update_kwargs["allUpIdentification"] = kwargs.pop("rollup_identification_value", unset) + update_kwargs["fillMissingPointType"] = kwargs.pop("fill_type", unset) + update_kwargs["fillMissingPointValue"] = kwargs.pop("custom_fill_value", unset) + update_kwargs["viewMode"] = kwargs.pop("access_mode", unset) + update_kwargs["admins"] = kwargs.pop("admins", unset) + update_kwargs["viewers"] = kwargs.pop("viewers", unset) + update_kwargs["status"] = kwargs.pop("status", unset) + update_kwargs["actionLinkTemplate"] = kwargs.pop("action_link_template", unset) + update_kwargs["dataSourceParameter"] = kwargs.pop("source", unset) + + update = {key: value for key, value in update_kwargs.items() if value != unset} + + if isinstance(data_feed, six.string_types): + data_feed_id = data_feed + data_feed_patch = construct_data_feed_dict(update) + + else: + data_feed_id = data_feed.id + data_feed_patch_type = DATA_FEED_PATCH[data_feed.source.data_source_type] + data_feed_patch = data_feed._to_generated_patch(data_feed_patch_type, update) + + await self._client.update_data_feed(data_feed_id, data_feed_patch, **kwargs) + return await self.get_data_feed(data_feed_id) + + @distributed_trace_async + async def update_anomaly_alert_configuration( + self, + alert_configuration: Union[str, AnomalyAlertConfiguration], + **kwargs: Any + ) -> AnomalyAlertConfiguration: + """Update anomaly alerting configuration. Either pass the entire AnomalyAlertConfiguration object + with the chosen updates or the ID to your alert configuration with updates passed via keyword arguments. + If you pass both the AnomalyAlertConfiguration object and keyword arguments, the keyword arguments + will take precedence. + + :param alert_configuration: AnomalyAlertConfiguration object or the ID to the alert configuration. + :type alert_configuration: str or ~azure.ai.metricsadvisor.models.AnomalyAlertConfiguration + :keyword str name: Name for the anomaly alert configuration. + :keyword metric_alert_configurations: Anomaly alert configurations. + :paramtype metric_alert_configurations: list[~azure.ai.metricsadvisor.models.MetricAlertConfiguration] + :keyword list[str] hook_ids: Unique hook IDs. + :keyword cross_metrics_operator: Cross metrics operator should be specified when setting up multiple metric + alert configurations. Possible values include: "AND", "OR", "XOR". + :paramtype cross_metrics_operator: str or + ~azure.ai.metricsadvisor.models.MetricAnomalyAlertConfigurationsOperator + :keyword str description: Anomaly alert configuration description. + :return: AnomalyAlertConfiguration + :rtype: ~azure.ai.metricsadvisor.models.AnomalyAlertConfiguration + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_anomaly_alert_configuration_async.py + :start-after: [START update_anomaly_alert_config_async] + :end-before: [END update_anomaly_alert_config_async] + :language: python + :dedent: 4 + :caption: Update an existing anomaly alert configuration + """ + + unset = object() + update_kwargs = {} + update_kwargs["name"] = kwargs.pop("name", unset) + update_kwargs["hookIds"] = kwargs.pop("hook_ids", unset) + update_kwargs["crossMetricsOperator"] = kwargs.pop("cross_metrics_operator", unset) + update_kwargs["metricAlertingConfigurations"] = kwargs.pop("metric_alert_configurations", unset) + update_kwargs["description"] = kwargs.pop("description", unset) + + update = {key: value for key, value in update_kwargs.items() if value != unset} + if isinstance(alert_configuration, six.string_types): + alert_configuration_id = alert_configuration + alert_configuration_patch = construct_alert_config_dict(update) + + else: + alert_configuration_id = alert_configuration.id + alert_configuration_patch = alert_configuration._to_generated_patch( + name=update.pop("name", None), + metric_alert_configurations=update.pop("metricAlertingConfigurations", None), + hook_ids=update.pop("hookIds", None), + cross_metrics_operator=update.pop("crossMetricsOperator", None), + description=update.pop("description", None), + ) + + await self._client.update_anomaly_alerting_configuration( + alert_configuration_id, + alert_configuration_patch, + **kwargs + ) + return await self.get_anomaly_alert_configuration(alert_configuration_id) + + @distributed_trace_async + async def update_metric_anomaly_detection_configuration( + self, + detection_configuration: Union[str, AnomalyDetectionConfiguration], + **kwargs: Any + ) -> AnomalyDetectionConfiguration: + """Update anomaly metric detection configuration. Either pass the entire AnomalyDetectionConfiguration object + with the chosen updates or the ID to your detection configuration with updates passed via keyword arguments. + If you pass both the AnomalyDetectionConfiguration object and keyword arguments, the keyword arguments + will take precedence. + + :param detection_configuration: AnomalyDetectionConfiguration object or the ID to the detection + configuration. + :type detection_configuration: str or ~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration + :keyword str name: The name for the anomaly detection configuration + :keyword str metric_id: metric unique id. + :keyword whole_series_detection_condition: Required. + :paramtype whole_series_detection_condition: ~azure.ai.metricsadvisor.models.MetricDetectionCondition + :keyword str description: anomaly detection configuration description. + :keyword series_group_detection_conditions: detection configuration for series group. + :paramtype series_group_detection_conditions: + list[~azure.ai.metricsadvisor.models.MetricSeriesGroupDetectionCondition] + :keyword series_detection_conditions: detection configuration for specific series. + :paramtype series_detection_conditions: + list[~azure.ai.metricsadvisor.models.MetricSingleSeriesDetectionCondition] + :return: AnomalyDetectionConfiguration + :rtype: ~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_anomaly_detection_configuration_async.py + :start-after: [START update_anomaly_detection_config_async] + :end-before: [END update_anomaly_detection_config_async] + :language: python + :dedent: 4 + :caption: Update an existing anomaly detection configuration + """ + + unset = object() + update_kwargs = {} + update_kwargs["name"] = kwargs.pop("name", unset) + update_kwargs["wholeMetricConfiguration"] = kwargs.pop("whole_series_detection_condition", unset) + update_kwargs["dimensionGroupOverrideConfigurations"] = kwargs.pop("series_group_detection_conditions", unset) + update_kwargs["seriesOverrideConfigurations"] = kwargs.pop("series_detection_conditions", unset) + update_kwargs["description"] = kwargs.pop("description", unset) + + update = {key: value for key, value in update_kwargs.items() if value != unset} + if isinstance(detection_configuration, six.string_types): + detection_configuration_id = detection_configuration + detection_config_patch = construct_detection_config_dict(update) + + else: + detection_configuration_id = detection_configuration.id + detection_config_patch = detection_configuration._to_generated_patch( + name=update.pop("name", None), + description=update.pop("description", None), + whole_series_detection_condition=update.pop("wholeMetricConfiguration", None), + series_group_detection_conditions=update.pop("dimensionGroupOverrideConfigurations", None), + series_detection_conditions=update.pop("seriesOverrideConfigurations", None) + ) + + await self._client.update_anomaly_detection_configuration( + detection_configuration_id, + detection_config_patch, + **kwargs + ) + return await self.get_metric_anomaly_detection_configuration(detection_configuration_id) + + @distributed_trace_async + async def update_hook( + self, + hook: Union[str, EmailHook, WebHook], + **kwargs: Any + ) -> Union[Hook, EmailHook, WebHook]: + """Update a hook. Either pass the entire EmailHook or WebHook object with the chosen updates, or the + ID to your hook configuration with the updates passed via keyword arguments. + If you pass both the hook object and keyword arguments, the keyword arguments will take precedence. + + :param hook: An email or web hook or the ID to the hook. If an ID is passed, you must pass `hook_type`. + :type hook: Union[str, ~azure.ai.metricsadvisor.models.EmailHook, ~azure.ai.metricsadvisor.models.WebHook] + :keyword str hook_type: The hook type. Possible values are "Email" or "Web". Must be passed if only the + hook ID is provided. + :keyword str name: Hook unique name. + :keyword str description: Hook description. + :keyword str external_link: Hook external link. + :keyword list[str] emails_to_alert: Email TO: list. Only should be passed to update EmailHook. + :keyword str endpoint: API address, will be called when alert is triggered, only support + POST method via SSL. Only should be passed to update WebHook. + :keyword str username: basic authentication. Only should be passed to update WebHook. + :keyword str password: basic authentication. Only should be passed to update WebHook. + :keyword str certificate_key: client certificate. Only should be passed to update WebHook. + :keyword str certificate_password: client certificate password. Only should be passed to update WebHook. + :return: EmailHook or WebHook + :rtype: Union[~azure.ai.metricsadvisor.models.Hook, ~azure.ai.metricsadvisor.models.EmailHook, + ~azure.ai.metricsadvisor.models.WebHook] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_hooks_async.py + :start-after: [START update_hook_async] + :end-before: [END update_hook_async] + :language: python + :dedent: 4 + :caption: Update an existing hook + """ + + unset = object() + update_kwargs = {} + hook_patch = None + hook_type = kwargs.pop("hook_type", None) + update_kwargs["hookName"] = kwargs.pop("name", unset) + update_kwargs["description"] = kwargs.pop("description", unset) + update_kwargs["externalLink"] = kwargs.pop("external_link", unset) + update_kwargs["toList"] = kwargs.pop("emails_to_alert", unset) + update_kwargs["endpoint"] = kwargs.pop('endpoint', unset) + update_kwargs["username"] = kwargs.pop('username', unset) + update_kwargs["password"] = kwargs.pop('password', unset) + update_kwargs["certificateKey"] = kwargs.pop('certificate_key', unset) + update_kwargs["certificatePassword"] = kwargs.pop('certificate_password', unset) + + update = {key: value for key, value in update_kwargs.items() if value != unset} + if isinstance(hook, six.string_types): + hook_id = hook + if hook_type is None: + raise ValueError("hook_type must be passed with a hook ID.") + + hook_patch = construct_hook_dict(update, hook_type) + + else: + hook_id = hook.id + if hook.hook_type == "Email": + hook_patch = hook._to_generated_patch( + name=update.pop("hookName", None), + description=update.pop("description", None), + external_link=update.pop("externalLink", None), + emails_to_alert=update.pop("toList", None), + ) + + elif hook.hook_type == "Webhook": + hook_patch = hook._to_generated_patch( + name=update.pop("hookName", None), + description=update.pop("description", None), + external_link=update.pop("externalLink", None), + endpoint=update.pop("endpoint", None), + password=update.pop("password", None), + username=update.pop("username", None), + certificate_key=update.pop("certificateKey", None), + certificate_password=update.pop("certificatePassword", None) + ) + + await self._client.update_hook( + hook_id, + hook_patch, + **kwargs + ) + return await self.get_hook(hook_id) + + @distributed_trace + def list_hooks( + self, + **kwargs: Any + ) -> AsyncItemPaged[Union[Hook, EmailHook, WebHook]]: + """List all hooks. + + :keyword str hook_name: filter hook by its name. + :keyword int skip: + :return: Pageable containing EmailHook and WebHook + :rtype: ~azure.core.paging.AsyncItemPaged[Union[~azure.ai.metricsadvisor.models.Hook, + ~azure.ai.metricsadvisor.models.EmailHook, ~azure.ai.metricsadvisor.models.WebHook]] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_hooks_async.py + :start-after: [START list_hooks_async] + :end-before: [END list_hooks_async] + :language: python + :dedent: 4 + :caption: List all the hooks under an account + """ + hook_name = kwargs.pop('hook_name', None) + skip = kwargs.pop('skip', None) + + def _convert_to_hook_type(hook): + if hook.hook_type == "Email": + return EmailHook._from_generated(hook) + return WebHook._from_generated(hook) + + return self._client.list_hooks( + hook_name=hook_name, + skip=skip, + cls=kwargs.pop("cls", lambda hooks: [_convert_to_hook_type(hook) for hook in hooks]), + **kwargs + ) + + @distributed_trace + def list_data_feeds( + self, + **kwargs: Any + ) -> AsyncItemPaged[DataFeed]: + """List all data feeds. + + :keyword str data_feed_name: filter data feed by its name. + :keyword data_source_type: filter data feed by its source type. + :paramtype data_source_type: str or ~azure.ai.metricsadvisor.models.DataSourceType + :keyword granularity_type: filter data feed by its granularity. + :paramtype granularity_type: str or ~azure.ai.metricsadvisor.models.DataFeedGranularityType + :keyword status: filter data feed by its status. + :paramtype status: str or ~azure.ai.metricsadvisor.models.DataFeedStatus + :keyword str creator: filter data feed by its creator. + :keyword int skip: + :return: Pageable of DataFeed + :rtype: ~azure.core.paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.DataFeed] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_data_feeds_async.py + :start-after: [START list_data_feeds_async] + :end-before: [END list_data_feeds_async] + :language: python + :dedent: 4 + :caption: List data feeds under an account. + """ + + data_feed_name = kwargs.pop("data_feed_name", None) + data_source_type = kwargs.pop("data_source_type", None) + granularity_type = kwargs.pop("granularity_type", None) + status = kwargs.pop("status", None) + creator = kwargs.pop("creator", None) + skip = kwargs.pop("skip", None) + + return self._client.list_data_feeds( + data_feed_name=data_feed_name, + data_source_type=data_source_type, + granularity_name=granularity_type, + status=status, + creator=creator, + skip=skip, + cls=kwargs.pop("cls", lambda feeds: [DataFeed._from_generated(feed) for feed in feeds]), + **kwargs + ) + + @distributed_trace + def list_anomaly_alert_configurations( + self, + detection_configuration_id: str, + **kwargs: Any + ) -> AsyncItemPaged[AnomalyAlertConfiguration]: + """Query all anomaly alert configurations for specific anomaly detection configuration. + + :param detection_configuration_id: anomaly detection configuration unique id. + :type detection_configuration_id: str + :return: Pageable of AnomalyAlertConfiguration + :rtype: AsyncItemPaged[AnomalyAlertConfiguration] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_anomaly_alert_configuration_async.py + :start-after: [START list_anomaly_alert_configs_async] + :end-before: [END list_anomaly_alert_configs_async] + :language: python + :dedent: 4 + :caption: List all anomaly alert configurations for specific anomaly detection configuration + """ + return self._client.get_anomaly_alerting_configurations_by_anomaly_detection_configuration( + detection_configuration_id, + cls=kwargs.pop("cls", lambda confs: [ + AnomalyAlertConfiguration._from_generated(conf) for conf in confs + ]), + **kwargs + ) + + @distributed_trace + def list_metric_anomaly_detection_configurations( + self, + metric_id: str, + **kwargs: Any + ) -> AsyncItemPaged[AnomalyDetectionConfiguration]: + """Query all anomaly detection configurations for specific metric. + + :param metric_id: metric unique id. + :type metric_id: str + :return: Pageable of AnomalyDetectionConfiguration + :rtype: AsyncItemPaged[AnomalyDetectionConfiguration] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_anomaly_detection_configuration_async.py + :start-after: [START list_anomaly_detection_configs_async] + :end-before: [END list_anomaly_detection_configs_async] + :language: python + :dedent: 4 + :caption: List all anomaly detection configurations for a specific metric + """ + return self._client.get_anomaly_detection_configurations_by_metric( + metric_id, + cls=kwargs.pop("cls", lambda confs: [ + AnomalyDetectionConfiguration._from_generated(conf) for conf in confs + ]), + **kwargs + ) + + @distributed_trace + def list_data_feed_ingestion_status( + self, + data_feed_id, # type: str + start_time, # type: datetime.datetime + end_time, # type: datetime.datetime + **kwargs # type: Any + ): + # type: (...) -> AsyncItemPaged[DataFeedIngestionStatus] + """Get data ingestion status by data feed. + + :param str data_feed_id: The data feed unique id. + :param start_time: Required. the start point of time range to query data ingestion status. + :type start_time: ~datetime.datetime + :param end_time: Required. the end point of time range to query data ingestion status. + :type end_time: ~datetime.datetime + :keyword int skip: + :return: Pageable of DataFeedIngestionStatus + :rtype: ~azure.core.paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.DataFeedIngestionStatus] + :raises ~azure.core.exceptions.HttpResponseError: + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_ingestion_async.py + :start-after: [START list_data_feed_ingestion_status_async] + :end-before: [END list_data_feed_ingestion_status_async] + :language: python + :dedent: 4 + :caption: List the data feed ingestion statuses by data feed ID + """ + + skip = kwargs.pop("skip", None) + + return self._client.get_data_feed_ingestion_status( + data_feed_id=data_feed_id, + body={ + "start_time": start_time, + "end_time": end_time + }, + skip=skip, + **kwargs + ) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/aio/_metrics_advisor_client_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/aio/_metrics_advisor_client_async.py new file mode 100644 index 000000000000..b7a1d672b53b --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/aio/_metrics_advisor_client_async.py @@ -0,0 +1,715 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING +import datetime + +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async +from azure.core.pipeline import AsyncPipeline +from azure.core.pipeline.policies import ( + UserAgentPolicy, + AsyncBearerTokenCredentialPolicy, + DistributedTracingPolicy, + RequestIdPolicy, + ContentDecodePolicy, + HttpLoggingPolicy, +) +from azure.core.pipeline.transport import AioHttpTransport +from azure.core.exceptions import ClientAuthenticationError +from .._metrics_advisor_key_credential import MetricsAdvisorKeyCredential +from .._metrics_advisor_key_credential_policy import MetricsAdvisorKeyCredentialPolicy +from .._generated.aio._configuration import AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2Configuration +from .._generated.models import ( + MetricFeedbackFilter, + DetectionSeriesQuery, + AlertingResultQuery, + DetectionAnomalyResultQuery, + AnomalyDimensionQuery, + DetectionIncidentResultQuery, + MetricDimensionQueryOptions, + MetricDataQueryOptions, + MetricSeriesQueryOptions, + EnrichmentStatusQueryOption, + TimeMode, + SeriesIdentity, + FeedbackDimensionFilter, +) +from .._generated.aio import AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2 +from .._helpers import convert_to_sub_feedback +from ..models._models import ( + Incident, + Anomaly, + MetricSeriesData, + Alert, + IncidentRootCause +) +from .._version import SDK_MONIKER + +if TYPE_CHECKING: + from typing import cast, List, Union, Optional, Dict + from azure.core.async_paging import AsyncItemPaged + from .._generated.models import ( + MetricFeedback, + SeriesResult, + EnrichmentStatus, + MetricSeriesItem as MetricSeriesDefinition + ) + from ..models._models import ( + AnomalyFeedback, + ChangePointFeedback, + CommentFeedback, + PeriodFeedback + ) + +class MetricsAdvisorClient(object): + """Represents an client that calls restful API of Azure Metrics Advisor service. + + :param str endpoint: Url to the Azure Metrics Advisor service endpoint + :param credential: credential Used to authenticate requests to the service. + :type credential: azure.ai.metricsadvisor.MetricsAdvisorKeyCredential + :keyword Pipeline pipeline: If omitted, the standard pipeline is used. + :keyword HttpTransport transport: If omitted, the standard pipeline is used. + :keyword list[HTTPPolicy] policies: If omitted, the standard pipeline is used. + + """ + def __init__(self, endpoint, credential, **kwargs): + # type: (str, MetricsAdvisorKeyCredential, dict) -> None + try: + if not endpoint.lower().startswith('http'): + endpoint = "https://" + endpoint + except AttributeError: + raise ValueError("Base URL must be a string.") + + if not credential: + raise ValueError("Missing credential") + + self._config = AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2Configuration(endpoint=endpoint, **kwargs) + self._credential = credential + self._config.user_agent_policy = UserAgentPolicy( + sdk_moniker=SDK_MONIKER, **kwargs + ) + + pipeline = kwargs.get("pipeline") + + if pipeline is None: + aad_mode = not isinstance(credential, MetricsAdvisorKeyCredential) + pipeline = self._create_pipeline( + credential=credential, + aad_mode=aad_mode, + endpoint=endpoint, + **kwargs) + + self._client = AzureCognitiveServiceMetricsAdvisorRESTAPIOpenAPIV2( + endpoint=endpoint, pipeline=pipeline + ) + + def __repr__(self): + # type: () -> str + return "".format( + repr(self._endpoint) + )[:1024] + + async def __aenter__(self): + # type: () -> MetricsAdvisorClient + await self._client.__aenter__() # pylint:disable=no-member + return self + + async def __aexit__(self, *args): + # type: (*Any) -> None + await self._client.__aexit__(*args) # pylint:disable=no-member + + async def close(self) -> None: + """Close the :class:`~azure.ai.metricsadvisor.aio.MetricsAdvisorClient` session. + """ + await self._client.__aexit__() + + def _create_pipeline(self, credential, endpoint=None, aad_mode=False, **kwargs): + transport = kwargs.get('transport') + policies = kwargs.get('policies') + + if policies is None: # [] is a valid policy list + if aad_mode: + scope = endpoint.strip("/") + "/.default" + if hasattr(credential, "get_token"): + credential_policy = AsyncBearerTokenCredentialPolicy(credential, scope) + else: + raise TypeError("Please provide an instance from azure-identity " + "or a class that implement the 'get_token protocol") + else: + credential_policy = MetricsAdvisorKeyCredentialPolicy(credential) + policies = [ + RequestIdPolicy(**kwargs), + self._config.headers_policy, + self._config.user_agent_policy, + self._config.proxy_policy, + ContentDecodePolicy(**kwargs), + self._config.redirect_policy, + self._config.retry_policy, + credential_policy, + self._config.logging_policy, # HTTP request/response log + DistributedTracingPolicy(**kwargs), + self._config.http_logging_policy or HttpLoggingPolicy(**kwargs) + ] + + if not transport: + transport = AioHttpTransport(**kwargs) + + return AsyncPipeline(transport, policies) + + @distributed_trace_async + async def add_feedback(self, feedback, **kwargs): + # type: (Union[AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback], dict) -> None + + """Create a new metric feedback. + + :param feedback: metric feedback. + :type feedback: ~azure.ai.metriscadvisor.models.AnomalyFeedback or + ~azure.ai.metriscadvisor.models.ChangePointFeedback or + ~azure.ai.metriscadvisor.models.CommentFeedback or + ~azure.ai.metriscadvisor.models.PeriodFeedback. + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_feedback_async.py + :start-after: [START add_feedback_async] + :end-before: [END add_feedback_async] + :language: python + :dedent: 4 + :caption: Add new feedback. + """ + error_map = { + 401: ClientAuthenticationError + } + + return await self._client.create_metric_feedback( + body=feedback._to_generated(), + error_map=error_map, + **kwargs) + + @distributed_trace_async + async def get_feedback(self, feedback_id, **kwargs): + # type: (str, dict) -> Union[AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback] + + """Get a metric feedback by its id. + + :param str feedback_id: the id of the feedback. + :return: The feedback object + :rtype: ~azure.ai.metriscadvisor.models.AnomalyFeedback or + ~azure.ai.metriscadvisor.models.ChangePointFeedback or + ~azure.ai.metriscadvisor.models.CommentFeedback or + ~azure.ai.metriscadvisor.models.PeriodFeedback. + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_feedback_async.py + :start-after: [START get_feedback_async] + :end-before: [END get_feedback_async] + :language: python + :dedent: 4 + :caption: Get a metric feedback by its id. + """ + error_map = { + 401: ClientAuthenticationError + } + + feedback = await self._client.get_metric_feedback( + feedback_id=feedback_id, + error_map=error_map, + **kwargs) + + return convert_to_sub_feedback(feedback) + + @distributed_trace + def list_feedbacks(self, metric_id, **kwargs): + # type: (str, dict) -> AsyncItemPaged[Union[AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback]] + + """List feedback on the given metric. + + :param str metric_id: filter feedbacks by metric id + :keyword int skip: + :keyword dimension_key: filter specfic dimension name and values + :paramtype dimension_key: dict[str, str] + :keyword feedback_type: filter feedbacks by type. Possible values include: "Anomaly", + "ChangePoint", "Period", "Comment". + :paramtype feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :keyword ~datetime.datetime start_time: start time filter under chosen time mode. + :keyword ~datetime.datetime end_time: end time filter under chosen time mode. + :keyword time_mode: time mode to filter feedback. Possible values include: "MetricTimestamp", + "FeedbackCreatedTime". + :paramtype time_mode: str or ~azure.ai.metricsadvisor.models.FeedbackQueryTimeMode + :return: Pageable list of MetricFeedback + :rtype: ~azure.core.paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.MetricFeedback] + :raises: ~azure.core.exceptions.HttpResponseError + + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_feedback_async.py + :start-after: [START list_feedback_async] + :end-before: [END list_feedback_async] + :language: python + :dedent: 4 + :caption: List feedback on the given metric. + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + dimension_filter = None + dimension_key = kwargs.pop('dimension_key', None) + if dimension_key: + dimension_filter = FeedbackDimensionFilter(dimension=dimension_key) + feedback_type = kwargs.pop('feedback_type', None) + start_time = kwargs.pop('start_time', None) + end_time = kwargs.pop('end_time', None) + time_mode = kwargs.pop('time_mode', None) + feedback_filter = MetricFeedbackFilter( + metric_id=metric_id, + dimension_filter=dimension_filter, + feedback_type=feedback_type, + start_time=start_time, + end_time=end_time, + time_mode=time_mode, + ) + + return self._client.list_metric_feedbacks( + skip=skip, + body=feedback_filter, + cls=kwargs.pop("cls", lambda result: [ + convert_to_sub_feedback(x) for x in result + ]), + error_map=error_map, + **kwargs) + + @distributed_trace + def list_incident_root_causes(self, detection_configuration_id, incident_id, **kwargs): + # type: (str, str, dict) -> AsyncItemPaged[IncidentRootCause] + + """Query root cause for incident. + + :param detection_configuration_id: anomaly detection configuration unique id. + :type detection_configuration_id: str + :param incident_id: incident id. + :type incident_id: str + :return: Pageable of root cause for incident + :rtype: AsyncItemPaged[~azure.ai.metriscadvisor.models.IncidentRootCause] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + return self._client.get_root_cause_of_incident_by_anomaly_detection_configuration( + configuration_id=detection_configuration_id, + incident_id=incident_id, + error_map=error_map, + cls=kwargs.pop("cls", lambda result: [ + IncidentRootCause._from_generated(x) for x in result + ]), + **kwargs + ) + + @distributed_trace + def list_metric_enriched_series_data(self, detection_configuration_id, series, start_time, end_time, **kwargs): + # type: (str, Union[List[SeriesIdentity], List[Dict[str, str]]], datetime, datetime, dict) -> AsyncItemPaged[SeriesResult] + """Query series enriched by anomaly detection. + + :param str detection_configuration_id: anomaly alerting configuration unique id. + :param series: List of dimensions specified for series. + :type series: ~azure.ai.metricsadvisor.models.SeriesIdentity or list[dict[str, str]] + :param ~datetime.datetime start_time: start time filter under chosen time mode. + :param ~datetime.datetime end_time: end time filter under chosen time mode. + :return: Pageable of SeriesResult + :rtype: AsyncItemPaged[~azure.ai.metricsadvisor.models.SeriesResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + detection_series_query = DetectionSeriesQuery( + start_time=start_time, + end_time=end_time, + series=[ + SeriesIdentity(dimension=dimension) + for dimension in series + if isinstance(dimension, dict) + ] or series, + ) + + return self._client.get_series_by_anomaly_detection_configuration( + configuration_id=detection_configuration_id, + body=detection_series_query, + error_map=error_map, + **kwargs) + + @distributed_trace + def list_alerts_for_alert_configuration(self, alert_configuration_id, start_time, end_time, time_mode, **kwargs): + # type: (str, datetime, datetime, Union[str, TimeMode], dict) -> AsyncItemPaged[Alert] + """Query alerts under anomaly alert configuration. + + :param alert_configuration_id: anomaly alert configuration unique id. + :type alert_configuration_id: str + :param ~datetime.datetime start_time: start time. + :param ~datetime.datetime end_time: end time. + :param time_mode: time mode. Possible values include: "AnomalyTime", "CreatedTime", + "ModifiedTime". + :type time_mode: str or ~azure.ai.metricsadvisor.models.TimeMode + :keyword int skip: + :return: Alerts under anomaly alert configuration. + :rtype: ~azure.core.paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.Alert] + :raises: ~azure.core.exceptions.HttpResponseError + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_anomaly_alert_configuration_async.py + :start-after: [START list_alerts_for_alert_config_async] + :end-before: [END list_alerts_for_alert_config_async] + :language: python + :dedent: 4 + :caption: Query anomaly detection results. + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + + alerting_result_query = AlertingResultQuery( + start_time=start_time, + end_time=end_time, + time_mode=time_mode, + ) + + return self._client.get_alerts_by_anomaly_alerting_configuration( + configuration_id=alert_configuration_id, + skip=skip, + body=alerting_result_query, + error_map=error_map, + cls=kwargs.pop("cls", lambda alerts: [Alert._from_generated(alert) for alert in alerts]), + **kwargs) + + @distributed_trace + def list_anomalies_for_alert(self, alert_configuration_id, alert_id, **kwargs): + # type: (str, str, dict) -> AsyncItemPaged[Anomaly] + + """Query anomalies under a specific alert. + + :param alert_configuration_id: anomaly alert configuration unique id. + :type alert_configuration_id: str + :param alert_id: alert id. + :type alert_id: str + :keyword int skip: + :return: Anomalies under a specific alert. + :rtype: ~azure.core.paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.Anomaly] + :raises: ~azure.core.exceptions.HttpResponseError + .. admonition:: Example: + + .. literalinclude:: ../samples/async_samples/sample_anomaly_alert_configuration_async.py + :start-after: [START list_anomalies_for_alert_async] + :end-before: [END list_anomalies_for_alert_async] + :language: python + :dedent: 4 + :caption: Query anomalies using alert id. + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + + return self._client.get_anomalies_from_alert_by_anomaly_alerting_configuration( + configuration_id=alert_configuration_id, + alert_id=alert_id, + skip=skip, + cls=lambda objs: [Anomaly._from_generated(x) for x in objs], + error_map=error_map, + **kwargs) + + @distributed_trace + def list_anomalies_for_detection_configuration(self, detection_configuration_id, start_time, end_time, **kwargs): + # type: (str, datetime, datetime, dict) -> AsyncItemPaged[Anomaly] + + """Query anomalies under anomaly detection configuration. + + :param detection_configuration_id: anomaly detection configuration unique id. + :type detection_configuration_id: str + :param ~datetime.datetime start_time: start time filter under chosen time mode. + :param ~datetime.datetime end_time: end time filter under chosen time mode. + :keyword int skip: + :keyword filter: + :paramtype filter: ~azure.ai.metricsadvisor.models.DetectionAnomalyFilterCondition + :return: Anomalies under anomaly detection configuration. + :rtype: ~azure.core.paging.AsyncItemPaged[~azure.ai.metricsadvisor.models.Anomaly] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + filter = kwargs.pop('filter', None) + detection_anomaly_result_query = DetectionAnomalyResultQuery( + start_time=start_time, + end_time=end_time, + filter=filter, + ) + + return self._client.get_anomalies_by_anomaly_detection_configuration( + configuration_id=detection_configuration_id, + skip=skip, + body=detection_anomaly_result_query, + cls=lambda objs: [Anomaly._from_generated(x) for x in objs], + error_map=error_map, + **kwargs) + + @distributed_trace + def list_dimension_values_for_detection_configuration( + self, detection_configuration_id, + dimension_name, + start_time, + end_time, + **kwargs + ): + # type: (str, str, datetime, datetime, dict) -> AsyncItemPaged[str] + + """Query dimension values of anomalies. + + :param detection_configuration_id: anomaly detection configuration unique id. + :type detection_configuration_id: str + :param str dimension_name: dimension to query. + :param ~datetime.datetime start_time: start time filter under chosen time mode. + :param ~datetime.datetime end_time: end time filter under chosen time mode. + :keyword int skip: + :keyword dimension_name: str + :paramtype dimension_filter: ~azure.ai.metricsadvisor.models.DimensionGroupIdentity + :return: Dimension values of anomalies. + :rtype: ~azure.core.paging.AsyncItemPaged[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + dimension_filter = kwargs.pop('dimension_filter', None) + anomaly_dimension_query = AnomalyDimensionQuery( + start_time=start_time, + end_time=end_time, + dimension_name=dimension_name, + dimension_filter=dimension_filter, + ) + + return self._client.get_dimension_of_anomalies_by_anomaly_detection_configuration( + configuration_id=detection_configuration_id, + skip=skip, + body=anomaly_dimension_query, + error_map=error_map, + **kwargs) + + @distributed_trace + def list_incidents_for_alert(self, alert_configuration_id, alert_id, **kwargs): + # type: (str, str, dict) -> AsyncItemPaged[Incident] + + """Query incidents under a specific alert. + + :param alert_configuration_id: anomaly alerting configuration unique id. + :type alert_configuration_id: str + :param alert_id: alert id. + :type alert_id: str + :keyword int skip: + :return: Incidents under a specific alert. + :rtype: ~azure.core.paging.AsyncItemPaged[~azure.ai.metriscadvisor.models.Incident] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + + return self._client.get_incidents_from_alert_by_anomaly_alerting_configuration( + configuration_id=alert_configuration_id, + alert_id=alert_id, + skip=skip, + cls=lambda objs: [Incident._from_generated(x) for x in objs], + error_map=error_map, + **kwargs) + + @distributed_trace + def list_incidents_for_detection_configuration(self, detection_configuration_id, start_time, end_time, **kwargs): + # type: (str, datetime, datetime, dict) -> AsyncItemPaged[Incident] + + """Query incidents under a specific alert. + + :param detection_configuration_id: anomaly alerting configuration unique id. + :type detection_configuration_id: str + :param ~datetime.datetime start_time: start time filter under chosen time mode. + :param ~datetime.datetime end_time: end time filter under chosen time mode. + :keyword filter: + :paramtype filter: ~azure.ai.metricsadvisor.models.DetectionIncidentFilterCondition + :return: Incidents under a specific alert. + :rtype: ~azure.core.paging.AsyncItemPaged[~azure.ai.metriscadvisor.models.Incident] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + filter = kwargs.pop('filter', None) + + detection_incident_result_query = DetectionIncidentResultQuery( + start_time=start_time, + end_time=end_time, + filter=filter, + ) + + return self._client.get_incidents_by_anomaly_detection_configuration( + configuration_id=detection_configuration_id, + body=detection_incident_result_query, + cls=lambda objs: [Incident._from_generated(x) for x in objs], + error_map=error_map, + **kwargs) + + @distributed_trace + def list_metric_dimension_values(self, metric_id, dimension_name, **kwargs): + # type: (str, str, dict) -> AsyncItemPaged[str] + + """List dimension from certain metric. + + :param metric_id: metric unique id. + :type metric_id: str + :param dimension_name: the dimension name + :type dimension_name: str + :keyword int skip: + :keyword dimension_value_filter: dimension value to be filtered. + :paramtype dimension_value_filter: str + :return: Dimension from certain metric. + :rtype: ~azure.core.paging.AsyncItemPaged[str] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + dimension_value_filter = kwargs.pop('dimension_value_filter', None) + + metric_dimension_query_options = MetricDimensionQueryOptions( + dimension_name=dimension_name, + dimension_value_filter=dimension_value_filter, + ) + + return self._client.get_metric_dimension( + metric_id=metric_id, + body=metric_dimension_query_options, + skip=skip, + error_map=error_map, + **kwargs) + + @distributed_trace + def list_metrics_series_data(self, metric_id, start_time, end_time, filter, **kwargs): + # type: (str, List[Dict[str, str]], datetime, datetime, dict) -> AsyncItemPaged[MetricSeriesData] + + """Get time series data from metric. + + :param metric_id: metric unique id. + :type metric_id: str + :param ~datetime.datetime start_time: start time filter under chosen time mode. + :param ~datetime.datetime end_time: end time filter under chosen time mode. + :param filter: query specific series. + :type filter: list[dict[str, str]] + :return: Time series data from metric. + :rtype: AsyncItemPaged[~azure.ai.metriscadvisor.models.MetricSeriesData] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + metric_data_query_options = MetricDataQueryOptions( + start_time=start_time, + end_time=end_time, + series=filter, + ) + + return self._client.get_metric_data( + metric_id=metric_id, + body=metric_data_query_options, + error_map=error_map, + cls=kwargs.pop("cls", lambda result: [MetricSeriesData._from_generated(series) for series in result]), + **kwargs) + + @distributed_trace + def list_metric_series_definitions(self, metric_id, active_since, **kwargs): + # type: (str, datetime, dict) -> AsyncItemPaged[MetricSeriesDefinition] + + """List series (dimension combinations) from metric. + + :param metric_id: metric unique id. + :type metric_id: str + :param active_since: Required. query series ingested after this time, the format should be + yyyy-MM-ddTHH:mm:ssZ. + :type active_since: ~datetime.datetime + :keyword int skip: + :keyword ~datetime.datetime active_since: query series ingested after this time, the format should be + yyyy-MM-ddTHH:mm:ssZ. + :keyword dimension_filter: filter specfic dimension name and values. + :paramtype dimension_filter: dict[str, list[str]] + :return: Series (dimension combinations) from metric. + :rtype: ~azure.core.paging.AsyncItemPaged[~azure.ai.metriscadvisor.models.MetricSeriesDefinition] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + dimension_filter = kwargs.pop('dimension_filter', None) + + metric_series_query_options = MetricSeriesQueryOptions( + active_since=active_since, + dimension_filter=dimension_filter, + ) + + return self._client.get_metric_series( + metric_id=metric_id, + body=metric_series_query_options, + skip=skip, + error_map=error_map, + **kwargs) + + @distributed_trace + def list_metric_enrichment_status(self, metric_id, start_time, end_time, **kwargs): + # type: (str, datetime, datetime, dict) -> AsyncItemPaged[EnrichmentStatus] + + """Query anomaly detection status. + + :param metric_id: filter feedbacks by metric id. + :type metric_id: str + :param ~datetime.datetime start_time: start time filter under chosen time mode. + :param ~datetime.datetime end_time: end time filter under chosen time mode. + :keyword int skip: + :return: Anomaly detection status. + :rtype: ~azure.core.paging.AsyncItemPaged[~azure.ai.metriscadvisor.models.EnrichmentStatus] + :raises: ~azure.core.exceptions.HttpResponseError + """ + error_map = { + 401: ClientAuthenticationError + } + + skip = kwargs.pop('skip', None) + enrichment_status_query_option = EnrichmentStatusQueryOption( + start_time=start_time, + end_time=end_time, + ) + + return self._client.get_enrichment_status_by_metric( + metric_id=metric_id, + skip=skip, + body=enrichment_status_query_option, + error_map=error_map, + **kwargs) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/models/__init__.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/models/__init__.py new file mode 100644 index 000000000000..aceb8f41259d --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/models/__init__.py @@ -0,0 +1,199 @@ +# -------------------------------------------------------------------------- +# +# Copyright (c) Microsoft Corporation. All rights reserved. +# +# The MIT License (MIT) +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the ""Software""), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. +# +# -------------------------------------------------------------------------- + +from .._generated.models._azure_cognitive_service_metrics_advisor_restapi_open_ap_iv2_enums import ( + SnoozeScope, + Severity, + DataSourceType, + ViewMode as DataFeedAccessMode, + DataFeedDetailRollUpMethod as DataFeedAutoRollupMethod, + FillMissingPointType as DataSourceMissingDataPointFillType, + AnomalyDetectorDirection, + IncidentPropertyIncidentStatus, + Granularity as DataFeedGranularityType, + DataFeedDetailStatus as DataFeedStatus, + AnomalyValue, + ChangePointValue, + PeriodType, +) + +from .._generated.models import ( + FeedbackQueryTimeMode, + RootCause, + SeriesResult, + DetectionAnomalyFilterCondition, + DimensionGroupIdentity, + DetectionIncidentFilterCondition, + AnomalyDetectionConfiguration, + DimensionGroupConfiguration, + SeriesConfiguration, + EnrichmentStatus, + MetricSeriesItem as MetricSeriesDefinition, + IngestionStatus as DataFeedIngestionStatus, + SeriesIdentity +) + +from ._models import ( + AnomalyFeedback, + ChangePointFeedback, + CommentFeedback, + PeriodFeedback, + MetricAnomalyAlertConfigurationsOperator, + DataFeedGranularity, + DataFeedIngestionSettings, + DataFeedOptions, + DataFeedMissingDataPointFillSettings, + DataFeedRollupSettings, + DataFeedSchema, + DataFeed, + MetricAnomalyAlertScope, + MetricAlertConfiguration, + AzureApplicationInsightsDataFeed, + AzureBlobDataFeed, + AzureCosmosDBDataFeed, + AzureTableDataFeed, + HttpRequestDataFeed, + InfluxDBDataFeed, + SQLServerDataFeed, + MongoDBDataFeed, + MySqlDataFeed, + PostgreSqlDataFeed, + AzureDataExplorerDataFeed, + AnomalyAlertConfiguration, + Hook, + EmailHook, + WebHook, + TopNGroupScope, + SeverityCondition, + MetricAnomalyAlertSnoozeCondition, + MetricBoundaryCondition, + MetricDetectionCondition, + MetricSeriesGroupDetectionCondition, + SmartDetectionCondition, + HardThresholdCondition, + SuppressCondition, + ChangeThresholdCondition, + MetricSingleSeriesDetectionCondition, + Dimension, + Metric, + DataFeedIngestionProgress, + DetectionConditionsOperator, + AnomalyDetectionConfiguration, + MetricAnomalyAlertConditions, + Incident, + Anomaly, + MetricSeriesData, + Alert, + AzureDataLakeStorageGen2DataFeed, + ElasticsearchDataFeed, + MetricAnomalyAlertScopeType, + DataFeedRollupType +) + + +__all__ = ( + "AnomalyFeedback", + "ChangePointFeedback", + "CommentFeedback", + "PeriodFeedback", + "FeedbackQueryTimeMode", + "RootCause", + "SeriesResult", + "AnomalyAlertConfiguration", + "DetectionAnomalyFilterCondition", + "DimensionGroupIdentity", + "Incident", + "DetectionIncidentFilterCondition", + "AnomalyDetectionConfiguration", + "DimensionGroupConfiguration", + "SeriesConfiguration", + "MetricAnomalyAlertConfigurationsOperator", + "DataFeedStatus", + "DataFeedGranularity", + "DataFeedIngestionSettings", + "DataFeedOptions", + "DataFeedMissingDataPointFillSettings", + "DataFeedRollupSettings", + "DataFeedSchema", + "Dimension", + "Metric", + "DataFeed", + "TopNGroupScope", + "MetricAnomalyAlertScope", + "MetricAlertConfiguration", + "SnoozeScope", + "Severity", + "MetricAnomalyAlertSnoozeCondition", + "MetricBoundaryCondition", + "AzureApplicationInsightsDataFeed", + "AzureBlobDataFeed", + "AzureCosmosDBDataFeed", + "AzureTableDataFeed", + "HttpRequestDataFeed", + "InfluxDBDataFeed", + "SQLServerDataFeed", + "MongoDBDataFeed", + "MySqlDataFeed", + "PostgreSqlDataFeed", + "AzureDataExplorerDataFeed", + "MetricDetectionCondition", + "MetricSeriesGroupDetectionCondition", + "MetricSingleSeriesDetectionCondition", + "SeverityCondition", + "DataSourceType", + "MetricAnomalyAlertScopeType", + "AnomalyDetectorDirection", + "Hook", + "EmailHook", + "WebHook", + "DataFeedIngestionProgress", + "DetectionConditionsOperator", + "AnomalyDetectionConfiguration", + "MetricAnomalyAlertConditions", + "EnrichmentStatus", + "DataFeedGranularityType", + "Anomaly", + "IncidentPropertyIncidentStatus", + "MetricSeriesData", + "MetricSeriesDefinition", + "Alert", + "DataFeedAccessMode", + "DataFeedRollupType", + "DataFeedAutoRollupMethod", + "DataSourceMissingDataPointFillType", + "DataFeedIngestionStatus", + "SmartDetectionCondition", + "SuppressCondition", + "ChangeThresholdCondition", + "HardThresholdCondition", + "SeriesIdentity", + "DataFeedIngestionStatus", + "AzureDataLakeStorageGen2DataFeed", + "ElasticsearchDataFeed", + "AnomalyValue", + "ChangePointValue", + "PeriodType", +) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/models/_models.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/models/_models.py new file mode 100644 index 000000000000..9f5126f5fb47 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/models/_models.py @@ -0,0 +1,2470 @@ +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +import datetime +import msrest +from typing import ( + Any, + Union, + List, + Dict, + TYPE_CHECKING +) +from enum import Enum + +from .._generated.models import ( + MetricAlertingConfiguration as _MetricAlertingConfiguration, + SeverityCondition as _SeverityCondition, + TopNGroupScope as _TopNGroupScope, + AlertSnoozeCondition as _AlertSnoozeCondition, + ValueCondition as _ValueCondition, + EmailHookInfo as _EmailHookInfo, + WebhookHookInfo as _WebhookHookInfo, + WholeMetricConfiguration as _WholeMetricConfiguration, + SuppressCondition as _SuppressCondition, + HardThresholdCondition as _HardThresholdCondition, + ChangeThresholdCondition as _ChangeThresholdCondition, + SmartDetectionCondition as _SmartDetectionCondition, + DimensionGroupConfiguration as _DimensionGroupConfiguration, + SeriesConfiguration as _SeriesConfiguration, + EmailHookInfoPatch as _EmailHookInfoPatch, + WebhookHookInfoPatch as _WebhookHookInfoPatch, + Dimension as _Dimension, + Metric as _Metric, + AnomalyFeedback as _AnomalyFeedback, + FeedbackDimensionFilter, + AnomalyFeedbackValue, + ChangePointFeedback as _ChangePointFeedback, + ChangePointFeedbackValue, + CommentFeedback as _CommentFeedback, + CommentFeedbackValue, + PeriodFeedback as _PeriodFeedback, + PeriodFeedbackValue, + EmailHookParameter as _EmailHookParameter, + WebhookHookParameter as _WebhookHookParameter, + AzureBlobParameter as _AzureBlobParameter, + SqlSourceParameter as _SqlSourceParameter, + AzureApplicationInsightsParameter as _AzureApplicationInsightsParameter, + AzureCosmosDBParameter as _AzureCosmosDBParameter, + AzureTableParameter as _AzureTableParameter, + HttpRequestParameter as _HttpRequestParameter, + InfluxDBParameter as _InfluxDBParameter, + MongoDBParameter as _MongoDBParameter, + AzureDataLakeStorageGen2Parameter as _AzureDataLakeStorageGen2Parameter, + ElasticsearchParameter as _ElasticsearchParameter, + DimensionGroupIdentity as _DimensionGroupIdentity, + SeriesIdentity as _SeriesIdentity, + AnomalyAlertingConfigurationPatch as _AnomalyAlertingConfigurationPatch, + AnomalyDetectionConfigurationPatch as _AnomalyDetectionConfigurationPatch +) + +if TYPE_CHECKING: + from . import ( + Severity, + SnoozeScope, + AnomalyDetectorDirection, + DataFeedGranularityType + ) + from .._generated.models import ( + AnomalyResult, + IncidentResult, + RootCause, + ) + + +class MetricAnomalyAlertScopeType(str, Enum): + """Anomaly scope + """ + + WHOLE_SERIES = "WholeSeries" + SERIES_GROUP = "SeriesGroup" + TOP_N = "TopN" + + @classmethod + def _to_generated(cls, alert): + try: + alert = alert.value + except AttributeError: + pass + if alert == "WholeSeries": + return "All" + if alert == "SeriesGroup": + return "Dimension" + return alert + + @classmethod + def _from_generated(cls, alert): + try: + alert = alert.value + except AttributeError: + pass + if alert == "All": + return "WholeSeries" + if alert == "Dimension": + return "SeriesGroup" + return alert + + +class DataFeedRollupType(str, Enum): + """Data feed rollup type + """ + + NO_ROLLUP = "NoRollup" + AUTO_ROLLUP = "AutoRollup" + ALREADY_ROLLUP = "AlreadyRollup" + + @classmethod + def _to_generated(cls, rollup): + try: + rollup = rollup.value + except AttributeError: + pass + if rollup == "AutoRollup": + return "NeedRollup" + return rollup + + @classmethod + def _from_generated(cls, rollup): + try: + rollup = rollup.value + except AttributeError: + pass + if rollup == "NeedRollup": + return "AutoRollup" + return rollup + + +class MetricAnomalyAlertConfigurationsOperator(str, Enum): + """Cross metrics operator + """ + + AND = "AND" + OR = "OR" + XOR = "XOR" + + +class DetectionConditionsOperator(str, Enum): + + AND = "AND" + OR = "OR" + + +class DataFeedGranularity(object): + """Data feed granularity + + :param granularity_type: Granularity of the time series. Possible values include: + "Yearly", "Monthly", "Weekly", "Daily", "Hourly", "Minutely", "Secondly", "Custom". + :type granularity_type: str or ~azure.ai.metricsadvisor.models.DataFeedGranularityType + :keyword int custom_granularity_value: Must be populated if granularity_type is "Custom". + """ + + def __init__(self, granularity_type, **kwargs): + # type: (Union[str, DataFeedGranularityType], Any) -> None + self.granularity_type = granularity_type + self.custom_granularity_value = kwargs.get('custom_granularity_value', None) + + @classmethod + def _from_generated(cls, granularity_name, granularity_amount): + return cls( + granularity_type=granularity_name, + custom_granularity_value=granularity_amount + ) + + +class DataFeedIngestionSettings(object): + """Data feed ingestion settings. + + :param ~datetime.datetime ingestion_begin_time: Ingestion start time. + :keyword int data_source_request_concurrency: The max concurrency of data ingestion queries against + user data source. Zero (0) means no limitation. + :keyword int ingestion_retry_delay: The min retry interval for failed data ingestion tasks, in seconds. + :keyword int ingestion_start_offset: The time that the beginning of data ingestion task will delay + for every data slice according to this offset, in seconds. + :keyword int stop_retry_after: Stop retry data ingestion after the data slice first + schedule time in seconds. + """ + def __init__(self, ingestion_begin_time, **kwargs): + # type: (datetime.datetime, Any) -> None + self.ingestion_begin_time = ingestion_begin_time + self.ingestion_start_offset = kwargs.get('ingestion_start_offset', 0) + self.data_source_request_concurrency = kwargs.get('data_source_request_concurrency', -1) + self.ingestion_retry_delay = kwargs.get('ingestion_retry_delay', -1) + self.stop_retry_after = kwargs.get('stop_retry_after', -1) + + +class DataFeedOptions(object): + """Data feed options. + + :keyword list[str] admins: Data feed administrators. + :keyword str data_feed_description: Data feed description. + :keyword missing_data_point_fill_settings: The fill missing point type and value. + :paramtype missing_data_point_fill_settings: + ~azure.ai.metricsadvisor.models.DataFeedMissingDataPointFillSettings + :keyword rollup_settings: The rollup settings. + :paramtype rollup_settings: + ~azure.ai.metricsadvisor.models.DataFeedRollupSettings + :keyword list[str] viewers: Data feed viewer. + :keyword access_mode: Data feed access mode. Possible values include: + "Private", "Public". Default value: "Private". + :paramtype access_mode: str or ~azure.ai.metricsadvisor.models.DataFeedAccessMode + :keyword str action_link_template: action link for alert. + """ + def __init__(self, **kwargs): + self.admins = kwargs.get('admins', None) + self.data_feed_description = kwargs.get('data_feed_description', None) + self.missing_data_point_fill_settings = kwargs.get('missing_data_point_fill_settings', None) + self.rollup_settings = kwargs.get('rollup_settings', None) + self.viewers = kwargs.get('viewers', None) + self.access_mode = kwargs.get('access_mode', "Private") + self.action_link_template = kwargs.get('action_link_template', None) + + +class DataFeedMissingDataPointFillSettings(object): + """Data feed missing data point fill settings + + :keyword fill_type: The type of fill missing point for anomaly detection. Possible + values include: "SmartFilling", "PreviousValue", "CustomValue", "NoFilling". Default value: + "SmartFilling". + :paramtype fill_type: str or ~azure.ai.metricsadvisor.models.DataSourceMissingDataPointFillType + :keyword float custom_fill_value: The value of fill missing point for anomaly detection + if "CustomValue" fill type is specified. + """ + + def __init__(self, **kwargs): + self.fill_type = kwargs.get('fill_type', "SmartFilling") + self.custom_fill_value = kwargs.get('custom_fill_value', None) + + +class DataFeedRollupSettings(object): + """Data feed rollup settings + + :keyword str rollup_identification_value: The identification value for the row of calculated all-up value. + :keyword rollup_type: Mark if the data feed needs rollup. Possible values include: "NoRollup", + "AutoRollup", "AlreadyRollup". Default value: "AutoRollup". + :paramtype roll_up_type: str or ~azure.ai.metricsadvisor.models.DataFeedRollupType + :keyword list[str] auto_rollup_group_by_column_names: Roll up columns. + :keyword rollup_method: Roll up method. Possible values include: "None", "Sum", "Max", "Min", + "Avg", "Count". + :paramtype rollup_method: str or ~azure.ai.metricsadvisor.models.DataFeedAutoRollupMethod + """ + def __init__(self, **kwargs): + self.rollup_identification_value = kwargs.get('rollup_identification_value', None) + self.rollup_type = kwargs.get('rollup_type', "AutoRollup") + self.auto_rollup_group_by_column_names = kwargs.get('auto_rollup_group_by_column_names', None) + self.rollup_method = kwargs.get('rollup_method', None) + + +class DataFeedSchema(object): + """Data feed schema + + :param metrics: List of metrics. + :type metrics: list[~azure.ai.metricsadvisor.models.Metric] + :keyword dimensions: List of dimension. + :paramtype dimensions: list[~azure.ai.metricsadvisor.models.Dimension] + :keyword str timestamp_column: User-defined timestamp column. + If timestamp_column is None, start time of every time slice will be used as default value. + """ + def __init__(self, metrics, **kwargs): + # type: (List[Metric], Any) -> None + self.metrics = metrics + self.dimensions = kwargs.get('dimensions', None) + self.timestamp_column = kwargs.get('timestamp_column', None) + + +class DataFeed(object): + """Represents a data feed. + + :ivar ~datetime.datetime created_time: Data feed created time. + :ivar granularity: Granularity of the time series. + :vartype granularity: ~azure.ai.metricsadvisor.models.DataFeedGranularity + :ivar str id: Data feed unique id. + :ivar ingestion_settings: Data feed ingestion settings. + :vartype ingestion_settings: ~azure.ai.metricsadvisor.models.DataFeedIngestionSettings + :ivar bool is_admin: Whether the query user is one of data feed administrators or not. + :ivar list[str] metric_ids: List of metric ids + :ivar str name: Data feed name. + :ivar options: Data feed options + :vartype options: ~azure.ai.metricsadvisor.models.DataFeedOptions + :ivar schema: Data feed schema + :vartype schema: ~azure.ai.metricsadvisor.models.DataFeedSchema + :ivar source: Data feed source. + :vartype source: Union[AzureApplicationInsightsDataFeed, AzureBlobDataFeed, AzureCosmosDBDataFeed, + AzureDataExplorerDataFeed, AzureDataLakeStorageGen2DataFeed, AzureTableDataFeed, HttpRequestDataFeed, + InfluxDBDataFeed, MySqlDataFeed, PostgreSqlDataFeed, SQLServerDataFeed, MongoDBDataFeed, ElasticsearchDataFeed] + :ivar status: Data feed status. Possible values include: "Active", "Paused". + Default value: "Active". + :vartype status: str or ~azure.ai.metricsadvisor.models.DataFeedStatus + """ + def __init__(self, **kwargs): + self.created_time = kwargs.get('created_time', None) + self.granularity = kwargs.get('granularity', None) + self.id = kwargs.get('id', None) + self.ingestion_settings = kwargs.get('ingestion_settings', None) + self.is_admin = kwargs.get('is_admin', None) + self.metric_ids = kwargs.get('metric_ids', None) + self.name = kwargs.get('name', None) + self.options = kwargs.get('options', None) + self.schema = kwargs.get('schema', None) + self.source = kwargs.get('source', None) + self.status = kwargs.get('status', None) + + @classmethod + def _from_generated(cls, data_feed): + return cls( + created_time=data_feed.created_time, + granularity=DataFeedGranularity._from_generated(data_feed.granularity_name, data_feed.granularity_amount), + id=data_feed.data_feed_id, + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=data_feed.data_start_from, + data_source_request_concurrency=data_feed.max_concurrency, + ingestion_retry_delay=data_feed.min_retry_interval_in_seconds, + ingestion_start_offset=data_feed.start_offset_in_seconds, + stop_retry_after=data_feed.stop_retry_after_in_seconds + ), + is_admin=data_feed.is_admin, + metric_ids=[metric.metric_id for metric in data_feed.metrics], + name=data_feed.data_feed_name, + options=DataFeedOptions( + admins=data_feed.admins, + data_feed_description=data_feed.data_feed_description, + missing_data_point_fill_settings=DataFeedMissingDataPointFillSettings( + fill_type=data_feed.fill_missing_point_type, + custom_fill_value=data_feed.fill_missing_point_value + ), + rollup_settings=DataFeedRollupSettings( + rollup_identification_value=data_feed.all_up_identification, + rollup_type=DataFeedRollupType._from_generated(data_feed.need_rollup), + auto_rollup_group_by_column_names=data_feed.roll_up_columns, + rollup_method=data_feed.roll_up_method + ), + viewers=data_feed.viewers, + access_mode=data_feed.view_mode, + action_link_template=data_feed.action_link_template + ), + schema=DataFeedSchema( + dimensions=[Dimension._from_generated(dim) for dim in data_feed.dimension], + metrics=[Metric._from_generated(metric) for metric in data_feed.metrics], + timestamp_column=data_feed.timestamp_column + ), + source=DATA_FEED_TRANSFORM[data_feed.data_source_type]._from_generated(data_feed.data_source_parameter), + status=data_feed.status, + ) + + def _to_generated_patch(self, data_source_feed_type, kwargs): + source_param = kwargs.pop("dataSourceParameter", None) + if source_param: + source_param = source_param._to_generated_patch() + + rollup_type = kwargs.pop("needRollup", None) + if rollup_type: + DataFeedRollupType._to_generated(rollup_type) + return data_source_feed_type( + data_feed_name=kwargs.pop("dataFeedName", None) or self.name, + data_source_parameter=source_param if source_param else self.source._to_generated_patch(), + timestamp_column=kwargs.pop("timestampColumn", None) or self.schema.timestamp_column, + data_start_from=kwargs.pop("dataStartFrom", None) or self.ingestion_settings.ingestion_begin_time, + max_concurrency=kwargs.pop("maxConcurrency", None) + or self.ingestion_settings.data_source_request_concurrency, + min_retry_interval_in_seconds=kwargs.pop("minRetryIntervalInSeconds", None) + or self.ingestion_settings.ingestion_retry_delay, + start_offset_in_seconds=kwargs.pop("startOffsetInSeconds", None) + or self.ingestion_settings.ingestion_start_offset, + stop_retry_after_in_seconds=kwargs.pop("stopRetryAfterInSeconds", None) + or self.ingestion_settings.stop_retry_after, + data_feed_description=kwargs.pop("dataFeedDescription", None) + or self.options.data_feed_description if self.options else None, + need_rollup=rollup_type + or DataFeedRollupType._to_generated(self.options.rollup_settings.rollup_type) + if self.options and self.options.rollup_settings else None, + roll_up_method=kwargs.pop("rollUpMethod", None) + or self.options.rollup_settings.rollup_method + if self.options and self.options.rollup_settings else None, + roll_up_columns=kwargs.pop("rollUpColumns", None) + or self.options.rollup_settings.auto_rollup_group_by_column_names + if self.options and self.options.rollup_settings else None, + all_up_identification=kwargs.pop("allUpIdentification", None) + or self.options.rollup_settings.rollup_identification_value + if self.options and self.options.rollup_settings else None, + fill_missing_point_type=kwargs.pop("fillMissingPointType", None) + or self.options.missing_data_point_fill_settings.fill_type + if self.options and self.options.missing_data_point_fill_settings else None, + fill_missing_point_value=kwargs.pop("fillMissingPointValue", None) + or self.options.missing_data_point_fill_settings.custom_fill_value + if self.options and self.options.missing_data_point_fill_settings else None, + viewers=kwargs.pop("viewers", None) + or self.options.viewers if self.options else None, + view_mode=kwargs.pop("viewMode", None) + or self.options.access_mode if self.options else None, + admins=kwargs.pop("admins", None) + or self.options.admins if self.options else None, + status=kwargs.pop("status", None) or self.status, + action_link_template=kwargs.pop("actionLinkTemplate", None) + or self.options.action_link_template if self.options else None + ) + + +class MetricAnomalyAlertScope(object): + """MetricAnomalyAlertScope + + :param scope_type: Required. Anomaly scope. Possible values include: "WholeSeries", + "SeriesGroup", "TopN". + :type scope_type: str or ~azure.ai.metricsadvisor.models.MetricAnomalyAlertScopeType + :keyword series_group_in_scope: Dimension specified for series group. + :paramtype series_group_in_scope: dict[str, str] + :keyword top_n_group_in_scope: + :paramtype top_n_group_in_scope: ~azure.ai.metricsadvisor.models.TopNGroupScope + """ + def __init__(self, scope_type, **kwargs): + # type: (Union[str, MetricAnomalyAlertScopeType], Any) -> None + self.scope_type = scope_type + self.series_group_in_scope = kwargs.get("series_group_in_scope", None) + self.top_n_group_in_scope = kwargs.get("top_n_group_in_scope", None) + + @classmethod + def _from_generated(cls, config): + return cls( + scope_type=MetricAnomalyAlertScopeType._from_generated(config.anomaly_scope_type), + series_group_in_scope=config.dimension_anomaly_scope.dimension + if config.dimension_anomaly_scope else None, + top_n_group_in_scope=TopNGroupScope( + top=config.top_n_anomaly_scope.top, + period=config.top_n_anomaly_scope.period, + min_top_count=config.top_n_anomaly_scope.min_top_count + ) if config.top_n_anomaly_scope else None + ) + + +class TopNGroupScope(object): + """TopNGroupScope. + + :param top: Required. top N, value range : [1, +∞). + :type top: int + :param period: Required. point count used to look back, value range : [1, +∞). + :type period: int + :param min_top_count: Required. min count should be in top N, value range : [1, +∞) + should be less than or equal to period. + :type min_top_count: int + """ + + def __init__(self, top, period, min_top_count, **kwargs): + # type: (int, int, int, Any) -> None + self.top = top + self.period = period + self.min_top_count = min_top_count + + +class SeverityCondition(object): + """SeverityCondition. + + :param min_alert_severity: Required. min alert severity. Possible values include: "Low", + "Medium", "High". + :type min_alert_severity: str or ~azure.ai.metricsadvisor.models.Severity + :param max_alert_severity: Required. max alert severity. Possible values include: "Low", + "Medium", "High". + :type max_alert_severity: str or ~azure.ai.metricsadvisor.models.Severity + """ + + def __init__(self, min_alert_severity, max_alert_severity, **kwargs): + # type: (Union[str, Severity], Union[str, Severity], Any) -> None + self.min_alert_severity = min_alert_severity + self.max_alert_severity = max_alert_severity + + +class MetricAnomalyAlertSnoozeCondition(object): + """MetricAnomalyAlertSnoozeCondition. + + :param auto_snooze: Required. snooze point count, value range : [0, +∞). + :type auto_snooze: int + :param snooze_scope: Required. snooze scope. Possible values include: "Metric", "Series". + :type snooze_scope: str or ~azure.ai.metricsadvisor.models.SnoozeScope + :param only_for_successive: Required. only snooze for successive anomalies. + :type only_for_successive: bool + """ + + def __init__(self, auto_snooze, snooze_scope, only_for_successive, **kwargs): + # type: (int, Union[str, SnoozeScope], bool, Any) -> None + self.auto_snooze = auto_snooze + self.snooze_scope = snooze_scope + self.only_for_successive = only_for_successive + + +class MetricAnomalyAlertConditions(object): + """MetricAnomalyAlertConditions + + :keyword metric_boundary_condition: + :paramtype metric_boundary_condition: ~azure.ai.metricsadvisor.models.MetricBoundaryCondition + :keyword severity_condition: + :paramtype severity_condition: ~azure.ai.metricsadvisor.models.SeverityCondition + """ + + def __init__(self, **kwargs): + self.metric_boundary_condition = kwargs.get("metric_boundary_condition", None) + self.severity_condition = kwargs.get("severity_condition", None) + + +class MetricBoundaryCondition(object): + """MetricBoundaryCondition. + + :param direction: Required. value filter direction. Possible values include: "Both", "Down", + "Up". + :type direction: str or ~azure.ai.metricsadvisor.models.AnomalyDetectorDirection + :keyword float lower: lower bound should be specified when direction is Both or Down. + :keyword float upper: upper bound should be specified when direction is Both or Up. + :keyword str companion_metric_id: the other metric unique id used for value filter. + :keyword bool trigger_for_missing: trigger alert when the corresponding point is missing in the other + metric should be specified only when using other metric to filter. + """ + + def __init__(self, direction, **kwargs): + # type: (Union[str, AnomalyDetectorDirection], Any) -> None + self.direction = direction + self.lower = kwargs.get('lower', None) + self.upper = kwargs.get('upper', None) + self.companion_metric_id = kwargs.get('companion_metric_id', None) + self.trigger_for_missing = kwargs.get('trigger_for_missing', None) + + +class MetricAlertConfiguration(object): + """MetricAlertConfiguration. + + :param detection_configuration_id: Required. Anomaly detection configuration unique id. + :type detection_configuration_id: str + :param alert_scope: Required. Anomaly scope. + :type alert_scope: ~azure.ai.metricsadvisor.models.MetricAnomalyAlertScope + :keyword use_detection_result_to_filter_anomalies: Negation operation. + :paramtype use_detection_result_to_filter_anomalies: bool + :keyword alert_conditions: + :paramtype alert_conditions: ~azure.ai.metricsadvisor.models.MetricAnomalyAlertConditions + :keyword alert_snooze_condition: + :paramtype alert_snooze_condition: ~azure.ai.metricsadvisor.models.MetricAnomalyAlertSnoozeCondition + """ + def __init__(self, detection_configuration_id, alert_scope, **kwargs): + # type: (str, MetricAnomalyAlertScope, Any) -> None + self.detection_configuration_id = detection_configuration_id + self.alert_scope = alert_scope + self.use_detection_result_to_filter_anomalies = kwargs.get("use_detection_result_to_filter_anomalies", None) + self.alert_conditions = kwargs.get("alert_conditions", None) + self.alert_snooze_condition = kwargs.get("alert_snooze_condition", None) + + @classmethod + def _from_generated(cls, config): + return cls( + detection_configuration_id=config.anomaly_detection_configuration_id, + alert_scope=MetricAnomalyAlertScope._from_generated(config), + use_detection_result_to_filter_anomalies=config.negation_operation, + alert_snooze_condition=MetricAnomalyAlertSnoozeCondition( + auto_snooze=config.snooze_filter.auto_snooze, + snooze_scope=config.snooze_filter.snooze_scope, + only_for_successive=config.snooze_filter.only_for_successive + ) if config.snooze_filter else None, + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction=config.value_filter.direction, + lower=config.value_filter.lower, + upper=config.value_filter.upper, + companion_metric_id=config.value_filter.metric_id, + trigger_for_missing=config.value_filter.trigger_for_missing, + ) if config.value_filter else None, + severity_condition=SeverityCondition( + max_alert_severity=config.severity_filter.max_alert_severity, + min_alert_severity=config.severity_filter.min_alert_severity + ) if config.severity_filter else None, + ) + ) + + def _to_generated(self): + return _MetricAlertingConfiguration( + anomaly_detection_configuration_id=self.detection_configuration_id, + anomaly_scope_type=MetricAnomalyAlertScopeType._to_generated(self.alert_scope.scope_type), + dimension_anomaly_scope=_DimensionGroupIdentity(dimension=self.alert_scope.series_group_in_scope) + if self.alert_scope.series_group_in_scope else None, + top_n_anomaly_scope=_TopNGroupScope( + top=self.alert_scope.top_n_group_in_scope.top, + period=self.alert_scope.top_n_group_in_scope.period, + min_top_count=self.alert_scope.top_n_group_in_scope.min_top_count, + ) if self.alert_scope.top_n_group_in_scope else None, + negation_operation=self.use_detection_result_to_filter_anomalies, + severity_filter=_SeverityCondition( + max_alert_severity=self.alert_conditions.severity_condition.max_alert_severity, + min_alert_severity=self.alert_conditions.severity_condition.min_alert_severity + ) if self.alert_conditions and self.alert_conditions.severity_condition else None, + snooze_filter=_AlertSnoozeCondition( + auto_snooze=self.alert_snooze_condition.auto_snooze, + snooze_scope=self.alert_snooze_condition.snooze_scope, + only_for_successive=self.alert_snooze_condition.only_for_successive + ) if self.alert_snooze_condition else None, + value_filter=_ValueCondition( + direction=self.alert_conditions.metric_boundary_condition.direction, + lower=self.alert_conditions.metric_boundary_condition.lower, + upper=self.alert_conditions.metric_boundary_condition.upper, + metric_id=self.alert_conditions.metric_boundary_condition.companion_metric_id, + trigger_for_missing=self.alert_conditions.metric_boundary_condition.trigger_for_missing, + ) if self.alert_conditions and self.alert_conditions.metric_boundary_condition else None + ) + + +class AnomalyAlertConfiguration(object): + """AnomalyAlertConfiguration. + + :ivar id: anomaly alert configuration unique id. + :vartype id: str + :ivar name: Required. anomaly alert configuration name. + :vartype name: str + :ivar description: anomaly alert configuration description. + :vartype description: str + :ivar cross_metrics_operator: cross metrics operator + should be specified when setting up multiple metric alert configurations. Possible values + include: "AND", "OR", "XOR". + :vartype cross_metrics_operator: str or + ~azure.ai.metricsadvisor.models.MetricAnomalyAlertConfigurationsOperator + :ivar hook_ids: Required. hook unique ids. + :vartype hook_ids: list[str] + :ivar metric_alert_configurations: Required. Anomaly alert configurations. + :vartype metric_alert_configurations: + list[~azure.ai.metricsadvisor.models.MetricAlertConfiguration] + """ + def __init__(self, **kwargs): + self.id = kwargs.get('id', None) + self.name = kwargs.get('name', None) + self.description = kwargs.get('description', None) + self.cross_metrics_operator = kwargs.get('cross_metrics_operator', None) + self.hook_ids = kwargs.get('hook_ids', None) + self.metric_alert_configurations = kwargs.get('metric_alert_configurations', None) + + @classmethod + def _from_generated(cls, config): + return cls( + id=config.anomaly_alerting_configuration_id, + name=config.name, + description=config.description, + cross_metrics_operator=config.cross_metrics_operator, + hook_ids=config.hook_ids, + metric_alert_configurations=[ + MetricAlertConfiguration._from_generated(c) + for c in config.metric_alerting_configurations + ] + ) + + def _to_generated_patch( + self, name, + metric_alert_configurations, + hook_ids, + cross_metrics_operator, + description + ): + metric_alert_configurations = metric_alert_configurations or self.metric_alert_configurations + return _AnomalyAlertingConfigurationPatch( + name=name or self.name, + metric_alerting_configurations=[ + config._to_generated() for config in metric_alert_configurations + ] if metric_alert_configurations else None, + hook_ids=hook_ids or self.hook_ids, + cross_metrics_operator=cross_metrics_operator or self.cross_metrics_operator, + description=description or self.description + ) + + +class AnomalyDetectionConfiguration(object): + """AnomalyDetectionConfiguration. + + :ivar str id: anomaly detection configuration unique id. + :ivar str name: Required. anomaly detection configuration name. + :ivar str description: anomaly detection configuration description. + :ivar str metric_id: Required. metric unique id. + :ivar whole_series_detection_condition: Required. + :vartype whole_series_detection_condition: ~azure.ai.metricsadvisor.models.MetricDetectionCondition + :ivar series_group_detection_conditions: detection configuration for series group. + :vartype series_group_detection_conditions: + list[~azure.ai.metricsadvisor.models.MetricSeriesGroupDetectionCondition] + :ivar series_detection_conditions: detection configuration for specific series. + :vartype series_detection_conditions: + list[~azure.ai.metricsadvisor.models.MetricSingleSeriesDetectionCondition] + """ + + def __init__(self, **kwargs): + self.id = kwargs.get('id', None) + self.name = kwargs.get('name', None) + self.description = kwargs.get('description', None) + self.metric_id = kwargs.get('metric_id', None) + self.whole_series_detection_condition = kwargs.get('whole_series_detection_condition', None) + self.series_group_detection_conditions = kwargs.get('series_group_detection_conditions', None) + self.series_detection_conditions = kwargs.get('series_detection_conditions', None) + + @classmethod + def _from_generated(cls, config): + return cls( + id=config.anomaly_detection_configuration_id, + name=config.name, + description=config.description, + metric_id=config.metric_id, + whole_series_detection_condition=MetricDetectionCondition._from_generated( + config.whole_metric_configuration + ), + series_group_detection_conditions=[ + MetricSeriesGroupDetectionCondition._from_generated(conf) + for conf in config.dimension_group_override_configurations] + if config.dimension_group_override_configurations else None, + series_detection_conditions=[ + MetricSingleSeriesDetectionCondition._from_generated(conf) + for conf in config.series_override_configurations] + if config.series_override_configurations else None, + ) + + def _to_generated_patch( + self, name, + description, + whole_series_detection_condition, + series_group_detection_conditions, + series_detection_conditions + ): + whole_series_detection_condition = whole_series_detection_condition or self.whole_series_detection_condition + series_group = series_group_detection_conditions or self.series_group_detection_conditions + series_detection = series_detection_conditions or self.series_detection_conditions + + return _AnomalyDetectionConfigurationPatch( + name=name or self.name, + description=description or self.description, + whole_metric_configuration=whole_series_detection_condition._to_generated() + if whole_series_detection_condition else None, + dimension_group_override_configurations=[group._to_generated() for group in series_group] + if series_group else None, + series_override_configurations=[series._to_generated() for series in series_detection] + if series_detection else None + ) + + +class AzureApplicationInsightsDataFeed(object): + """AzureApplicationInsightsDataFeed. + + :param azure_cloud: Required. Azure cloud environment. + :type azure_cloud: str + :param application_id: Required. Azure Application Insights ID. + :type application_id: str + :param api_key: Required. API Key. + :type api_key: str + :param query: Required. Query. + :type query: str + """ + + def __init__(self, azure_cloud, application_id, api_key, query, **kwargs): + # type: (str, str, str, str, Any) -> None + self.data_source_type = 'AzureApplicationInsights' # type: str + self.azure_cloud = azure_cloud + self.application_id = application_id + self.api_key = api_key + self.query = query + + @classmethod + def _from_generated(cls, source): + return cls( + azure_cloud=source.azure_cloud, + application_id=source.application_id, + api_key=source.api_key, + query=source.query + ) + + def _to_generated_patch(self): + return _AzureApplicationInsightsParameter( + azure_cloud=self.azure_cloud, + application_id=self.application_id, + api_key=self.api_key, + query=self.query + ) + + +class AzureBlobDataFeed(object): + """AzureBlobDataFeed. + + :param connection_string: Required. Azure Blob connection string. + :type connection_string: str + :param container: Required. Container. + :type container: str + :param blob_template: Required. Blob Template. + :type blob_template: str + """ + + def __init__(self, connection_string, container, blob_template, **kwargs): + # type: (str, str, str, Any) -> None + self.data_source_type = 'AzureBlob' # type: str + self.connection_string = connection_string + self.container = container + self.blob_template = blob_template + + @classmethod + def _from_generated(cls, source): + return cls( + connection_string=source.connection_string, + container=source.container, + blob_template=source.blob_template + ) + + def _to_generated_patch(self): + return _AzureBlobParameter( + connection_string=self.connection_string, + container=self.container, + blob_template=self.blob_template + ) + + +class AzureCosmosDBDataFeed(object): + """AzureCosmosDBDataFeed. + + :param connection_string: Required. Azure CosmosDB connection string. + :type connection_string: str + :param sql_query: Required. Query script. + :type sql_query: str + :param database: Required. Database name. + :type database: str + :param collection_id: Required. Collection id. + :type collection_id: str + """ + + def __init__(self, connection_string, sql_query, database, collection_id, **kwargs): + # type: (str, str, str, str, Any) -> None + self.data_source_type = 'AzureCosmosDB' # type: str + self.connection_string = connection_string + self.sql_query = sql_query + self.database = database + self.collection_id = collection_id + + @classmethod + def _from_generated(cls, source): + return cls( + connection_string=source.connection_string, + sql_query=source.sql_query, + database=source.database, + collection_id=source.collection_id + ) + + def _to_generated_patch(self): + return _AzureCosmosDBParameter( + connection_string=self.connection_string, + sql_query=self.sql_query, + database=self.database, + collection_id=self.collection_id + ) + + +class AzureDataExplorerDataFeed(object): + """AzureDataExplorerDataFeed. + + :param connection_string: Required. Database connection string. + :type connection_string: str + :param query: Required. Query script. + :type query: str + """ + + def __init__(self, connection_string, query, **kwargs): + # type: (str, str, Any) -> None + self.data_source_type = 'AzureDataExplorer' # type: str + self.connection_string = connection_string + self.query = query + + @classmethod + def _from_generated(cls, source): + return cls( + connection_string=source.connection_string, + query=source.query, + ) + + def _to_generated_patch(self): + return _SqlSourceParameter( + connection_string=self.connection_string, + query=self.query, + ) + + +class AzureTableDataFeed(object): + """AzureTableDataFeed. + + :param connection_string: Required. Azure Table connection string. + :type connection_string: str + :param query: Required. Query script. + :type query: str + :param table: Required. Table name. + :type table: str + """ + + def __init__(self, connection_string, query, table, **kwargs): + # type: (str, str, str, Any) -> None + self.data_source_type = 'AzureTable' # type: str + self.connection_string = connection_string + self.query = query + self.table = table + + @classmethod + def _from_generated(cls, source): + return cls( + connection_string=source.connection_string, + query=source.query, + table=source.table + ) + + def _to_generated_patch(self): + return _AzureTableParameter( + connection_string=self.connection_string, + query=self.query, + table=self.table + ) + + +class HttpRequestDataFeed(object): + """HttpRequestDataFeed. + + :param url: Required. HTTP URL. + :type url: str + :param http_method: Required. HTTP method. + :type http_method: str + :keyword str http_header: Required. HTTP header. + :keyword str payload: Required. HTTP request body. + """ + + def __init__(self, url, http_method, **kwargs): + # type: (str, str, Any) -> None + self.data_source_type = 'HttpRequest' # type: str + self.url = url + self.http_method = http_method + self.http_header = kwargs.get("http_header", None) + self.payload = kwargs.get("payload", None) + + @classmethod + def _from_generated(cls, source): + return cls( + url=source.url, + http_header=source.http_header, + http_method=source.http_method, + payload=source.payload + ) + + def _to_generated_patch(self): + return _HttpRequestParameter( + url=self.url, + http_header=self.http_header, + http_method=self.http_method, + payload=self.payload + ) + + +class InfluxDBDataFeed(object): + """InfluxDBDataFeed. + + :param connection_string: Required. InfluxDB connection string. + :type connection_string: str + :param database: Required. Database name. + :type database: str + :param user_name: Required. Database access user. + :type user_name: str + :param password: Required. Database access password. + :type password: str + :param query: Required. Query script. + :type query: str + """ + + def __init__(self, connection_string, database, user_name, password, query, **kwargs): + # type: (str, str, str, str, str, Any) -> None + self.data_source_type = 'InfluxDB' # type: str + self.connection_string = connection_string + self.database = database + self.user_name = user_name + self.password = password + self.query = query + + @classmethod + def _from_generated(cls, source): + return cls( + connection_string=source.connection_string, + database=source.database, + user_name=source.user_name, + password=source.password, + query=source.query + ) + + def _to_generated_patch(self): + return _InfluxDBParameter( + connection_string=self.connection_string, + database=self.database, + user_name=self.user_name, + password=self.password, + query=self.query + ) + + +class MySqlDataFeed(object): + """MySqlDataFeed. + + :param connection_string: Required. Database connection string. + :type connection_string: str + :param query: Required. Query script. + :type query: str + """ + + def __init__(self, connection_string, query, **kwargs): + # type: (str, str, Any) -> None + self.data_source_type = 'MySql' # type: str + self.connection_string = connection_string + self.query = query + + @classmethod + def _from_generated(cls, source): + return cls( + connection_string=source.connection_string, + query=source.query, + ) + + def _to_generated_patch(self): + return _SqlSourceParameter( + connection_string=self.connection_string, + query=self.query + ) + + +class PostgreSqlDataFeed(object): + """PostgreSqlDataFeed. + + :param connection_string: Required. Database connection string. + :type connection_string: str + :param query: Required. Query script. + :type query: str + """ + + def __init__(self, connection_string, query, **kwargs): + # type: (str, str, Any) -> None + self.data_source_type = 'PostgreSql' # type: str + self.connection_string = connection_string + self.query = query + + @classmethod + def _from_generated(cls, source): + return cls( + connection_string=source.connection_string, + query=source.query, + ) + + def _to_generated_patch(self): + return _SqlSourceParameter( + connection_string=self.connection_string, + query=self.query + ) + + +class SQLServerDataFeed(object): + """SQLServerDataFeed. + + :param connection_string: Required. Database connection string. + :type connection_string: str + :param query: Required. Query script. + :type query: str + """ + + def __init__(self, connection_string, query, **kwargs): + # type: (str, str, Any) -> None + self.data_source_type = 'SqlServer' # type: str + self.connection_string = connection_string + self.query = query + + @classmethod + def _from_generated(cls, source): + return cls( + connection_string=source.connection_string, + query=source.query, + ) + + def _to_generated_patch(self): + return _SqlSourceParameter( + connection_string=self.connection_string, + query=self.query, + ) + + +class AzureDataLakeStorageGen2DataFeed(object): + """AzureDataLakeStorageGen2Parameter. + + :param account_name: Required. Account name. + :type account_name: str + :param account_key: Required. Account key. + :type account_key: str + :param file_system_name: Required. File system name (Container). + :type file_system_name: str + :param directory_template: Required. Directory template. + :type directory_template: str + :param file_template: Required. File template. + :type file_template: str + """ + + def __init__( + self, + account_name, + account_key, + file_system_name, + directory_template, + file_template, + **kwargs + ): + # type: (str, str, str, str, str, Any) -> None + self.data_source_type = 'AzureDataLakeStorageGen2' # type: str + self.account_name = account_name + self.account_key = account_key + self.file_system_name = file_system_name + self.directory_template = directory_template + self.file_template = file_template + + @classmethod + def _from_generated(cls, source): + return cls( + account_name=source.account_name, + account_key=source.account_key, + file_system_name=source.file_system_name, + directory_template=source.directory_template, + file_template=source.file_template + ) + + def _to_generated_patch(self): + return _AzureDataLakeStorageGen2Parameter( + account_name=self.account_name, + account_key=self.account_key, + file_system_name=self.file_system_name, + directory_template=self.directory_template, + file_template=self.file_template + ) + + +class ElasticsearchDataFeed(object): + """ElasticsearchParameter. + + :param host: Required. Host. + :type host: str + :param port: Required. Port. + :type port: str + :param auth_header: Required. Authorization header. + :type auth_header: str + :param query: Required. Query. + :type query: str + """ + + def __init__(self, host, port, auth_header, query, **kwargs): + # type: (str, str, str, str, Any) -> None + self.data_source_type = 'Elasticsearch' # type: str + self.host = host + self.port = port + self.auth_header = auth_header + self.query = query + + @classmethod + def _from_generated(cls, source): + return cls( + host=source.host, + port=source.port, + auth_header=source.auth_header, + query=source.query + ) + + def _to_generated_patch(self): + return _ElasticsearchParameter( + host=self.host, + port=self.port, + auth_header=self.auth_header, + query=self.query + ) + + +class MongoDBDataFeed(object): + """MongoDBDataFeed. + + :param connection_string: Required. MongoDB connection string. + :type connection_string: str + :param database: Required. Database name. + :type database: str + :param command: Required. Query script. + :type command: str + """ + + def __init__(self, connection_string, database, command, **kwargs): + # type: (str, str, str, Any) -> None + self.data_source_type = 'MongoDB' # type: str + self.connection_string = connection_string + self.database = database + self.command = command + + @classmethod + def _from_generated(cls, source): + return cls( + connection_string=source.connection_string, + database=source.database, + command=source.command + ) + + def _to_generated_patch(self): + return _MongoDBParameter( + connection_string=self.connection_string, + database=self.database, + command=self.command + ) + + +class Hook(object): + """Hook. + + :ivar str description: Hook description. + :ivar str external_link: Hook external link. + :ivar list[str] admins: Hook administrators. + :ivar str name: Hook unique name. + :ivar str hook_type: Constant filled by server. Possible values include: + "Webhook", "Email". + :ivar str hook_id: Hook unique id. + """ + + def __init__(self, **kwargs): + self.id = kwargs.get('id', None) + self.name = kwargs.get('name', None) + self.description = kwargs.get('description', None) + self.external_link = kwargs.get('external_link', None) + self.admins = kwargs.get('admins', None) + self.hook_type = None + + +class EmailHook(Hook): + """EmailHook. + + :param list[str] emails_to_alert: Required. Email TO: list. + :keyword str description: Hook description. + :keyword str external_link: Hook external link. + :ivar list[str] admins: Hook administrators. + :ivar str name: Hook unique name. + :ivar str hook_type: Constant filled by server - "Email". + :ivar str id: Hook unique id. + """ + + def __init__(self, emails_to_alert, **kwargs): + # type: (List[str], Any) -> None + super(EmailHook, self).__init__(**kwargs) + self.hook_type = 'Email' # type: str + self.emails_to_alert = emails_to_alert + + @classmethod + def _from_generated(cls, hook): + return cls( + emails_to_alert=hook.hook_parameter.to_list, + name=hook.hook_name, + description=hook.description, + external_link=hook.external_link, + admins=hook.admins, + id=hook.hook_id + ) + + def _to_generated(self, name): + return _EmailHookInfo( + hook_name=name, + description=self.description, + external_link=self.external_link, + admins=self.admins, + hook_parameter=_EmailHookParameter( + to_list=self.emails_to_alert + ) + ) + + def _to_generated_patch(self, name, description, external_link, emails_to_alert): + return _EmailHookInfoPatch( + hook_name=name or self.name, + description=description or self.description, + external_link=external_link or self.external_link, + admins=self.admins, + hook_parameter=_EmailHookParameter( + to_list=emails_to_alert or self.emails_to_alert + ) + ) + + +class WebHook(Hook): + """WebHook. + + :param str endpoint: Required. API address, will be called when alert is triggered, only support + POST method via SSL. + :keyword str username: basic authentication. + :keyword str password: basic authentication. + :keyword str certificate_key: client certificate. + :keyword str certificate_password: client certificate password. + :keyword str description: Hook description. + :keyword str external_link: Hook external link. + :ivar list[str] admins: Hook administrators. + :ivar str name: Hook unique name. + :ivar str hook_type: Constant filled by server - "Webhook". + :ivar str id: Hook unique id. + """ + + def __init__(self, endpoint, **kwargs): + # type: (str, Any) -> None + super(WebHook, self).__init__(**kwargs) + self.hook_type = 'Webhook' # type: str + self.endpoint = endpoint + self.username = kwargs.get('username', None) + self.password = kwargs.get('password', None) + self.certificate_key = kwargs.get('certificate_key', None) + self.certificate_password = kwargs.get('certificate_password', None) + + @classmethod + def _from_generated(cls, hook): + return cls( + endpoint=hook.hook_parameter.endpoint, + username=hook.hook_parameter.username, + password=hook.hook_parameter.password, + certificate_key=hook.hook_parameter.certificate_key, + certificate_password=hook.hook_parameter.certificate_password, + name=hook.hook_name, + description=hook.description, + external_link=hook.external_link, + admins=hook.admins, + id=hook.hook_id + ) + + def _to_generated(self, name): + return _WebhookHookInfo( + hook_name=name, + description=self.description, + external_link=self.external_link, + admins=self.admins, + hook_parameter=_WebhookHookParameter( + endpoint=self.endpoint, + username=self.username, + password=self.password, + certificate_key=self.certificate_key, + certificate_password=self.certificate_password + ) + ) + + def _to_generated_patch( + self, name, + description, + external_link, + endpoint, + password, + username, + certificate_key, + certificate_password + ): + return _WebhookHookInfoPatch( + hook_name=name or self.name, + description=description or self.description, + external_link=external_link or self.external_link, + admins=self.admins, + hook_parameter=_WebhookHookParameter( + endpoint=endpoint or self.endpoint, + username=username or self.username, + password=password or self.password, + certificate_key=certificate_key or self.certificate_key, + certificate_password=certificate_password or self.certificate_password + ) + ) + + +class MetricDetectionCondition(object): + """MetricDetectionCondition. + + :keyword cross_conditions_operator: condition operator + should be specified when combining multiple detection conditions. Possible values include: + "AND", "OR". + :paramtype cross_conditions_operator: str or + ~azure.ai.metricsadvisor.models.DetectionConditionsOperator + :keyword smart_detection_condition: + :paramtype smart_detection_condition: ~azure.ai.metricsadvisor.models.SmartDetectionCondition + :keyword hard_threshold_condition: + :paramtype hard_threshold_condition: ~azure.ai.metricsadvisor.models.HardThresholdCondition + :keyword change_threshold_condition: + :paramtype change_threshold_condition: ~azure.ai.metricsadvisor.models.ChangeThresholdCondition + """ + + def __init__(self, **kwargs): + self.cross_conditions_operator = kwargs.get('cross_conditions_operator', None) + self.smart_detection_condition = kwargs.get('smart_detection_condition', None) + self.hard_threshold_condition = kwargs.get('hard_threshold_condition', None) + self.change_threshold_condition = kwargs.get('change_threshold_condition', None) + + @classmethod + def _from_generated(cls, condition): + return cls( + cross_conditions_operator=condition.condition_operator, + smart_detection_condition=SmartDetectionCondition._from_generated(condition.smart_detection_condition), + hard_threshold_condition=HardThresholdCondition._from_generated(condition.hard_threshold_condition), + change_threshold_condition=ChangeThresholdCondition._from_generated(condition.change_threshold_condition) + ) + + def _to_generated(self): + return _WholeMetricConfiguration( + condition_operator=self.cross_conditions_operator, + smart_detection_condition=self.smart_detection_condition._to_generated() + if self.smart_detection_condition else None, + hard_threshold_condition=self.hard_threshold_condition._to_generated() + if self.hard_threshold_condition else None, + change_threshold_condition=self.change_threshold_condition._to_generated() + if self.change_threshold_condition else None + ) + + +class ChangeThresholdCondition(object): + """ChangeThresholdCondition. + + :param change_percentage: Required. change percentage, value range : [0, +∞). + :type change_percentage: float + :param shift_point: Required. shift point, value range : [1, +∞). + :type shift_point: int + :param within_range: Required. if the withinRange = true, detected data is abnormal when the + value falls in the range, in this case anomalyDetectorDirection must be Both + if the withinRange = false, detected data is abnormal when the value falls out of the range. + :type within_range: bool + :param anomaly_detector_direction: Required. detection direction. Possible values include: + "Both", "Down", "Up". + :type anomaly_detector_direction: str or + ~azure.ai.metricsadvisor.models.AnomalyDetectorDirection + :param suppress_condition: Required. + :type suppress_condition: ~azure.ai.metricsadvisor.models.SuppressCondition + """ + + def __init__( + self, change_percentage, # type: float + shift_point, # type: int + within_range, # type: bool + anomaly_detector_direction, # type: Union[str, AnomalyDetectorDirection] + suppress_condition, # type: SuppressCondition + **kwargs # type: Any + ): + # type: (...) -> None + self.change_percentage = change_percentage + self.shift_point = shift_point + self.within_range = within_range + self.anomaly_detector_direction = anomaly_detector_direction + self.suppress_condition = suppress_condition + + @classmethod + def _from_generated(cls, condition): + return cls( + change_percentage=condition.change_percentage, + shift_point=condition.shift_point, + within_range=condition.within_range, + anomaly_detector_direction=condition.anomaly_detector_direction, + suppress_condition=SuppressCondition._from_generated(condition.suppress_condition), + ) if condition else None + + def _to_generated(self): + return _ChangeThresholdCondition( + change_percentage=self.change_percentage, + shift_point=self.shift_point, + within_range=self.within_range, + anomaly_detector_direction=self.anomaly_detector_direction, + suppress_condition=_SuppressCondition( + min_number=self.suppress_condition.min_number, + min_ratio=self.suppress_condition.min_ratio, + ) + ) + + +class SuppressCondition(object): + """SuppressCondition. + + :param min_number: Required. min point number, value range : [1, +∞). + :type min_number: int + :param min_ratio: Required. min point ratio, value range : (0, 100]. + :type min_ratio: float + """ + + def __init__(self, min_number, min_ratio, **kwargs): + # type: (int, float, Any) -> None + self.min_number = min_number + self.min_ratio = min_ratio + + @classmethod + def _from_generated(cls, condition): + return cls( + min_number=condition.min_number, + min_ratio=condition.min_ratio + ) if condition else None + + +class SmartDetectionCondition(object): + """SmartDetectionCondition. + + :param sensitivity: Required. sensitivity, value range : (0, 100]. + :type sensitivity: float + :param anomaly_detector_direction: Required. detection direction. Possible values include: + "Both", "Down", "Up". + :type anomaly_detector_direction: str or + ~azure.ai.metricsadvisor.models.AnomalyDetectorDirection + :param suppress_condition: Required. + :type suppress_condition: ~azure.ai.metricsadvisor.models.SuppressCondition + """ + + def __init__(self, sensitivity, anomaly_detector_direction, suppress_condition, **kwargs): + # type: (float, Union[str, AnomalyDetectorDirection], SuppressCondition, Any) -> None + self.sensitivity = sensitivity + self.anomaly_detector_direction = anomaly_detector_direction + self.suppress_condition = suppress_condition + + @classmethod + def _from_generated(cls, condition): + return cls( + sensitivity=condition.sensitivity, + anomaly_detector_direction=condition.anomaly_detector_direction, + suppress_condition=SuppressCondition._from_generated(condition.suppress_condition) + ) if condition else None + + def _to_generated(self): + return _SmartDetectionCondition( + sensitivity=self.sensitivity, + anomaly_detector_direction=self.anomaly_detector_direction, + suppress_condition=_SuppressCondition( + min_number=self.suppress_condition.min_number, + min_ratio=self.suppress_condition.min_ratio, + ) + ) + + +class HardThresholdCondition(object): + """HardThresholdCondition. + + :param anomaly_detector_direction: Required. detection direction. Possible values include: + "Both", "Down", "Up". + :type anomaly_detector_direction: str or + ~azure.ai.metricsadvisor.models.AnomalyDetectorDirection + :param suppress_condition: Required. + :type suppress_condition: ~azure.ai.metricsadvisor.models.SuppressCondition + :keyword lower_bound: lower bound + should be specified when anomalyDetectorDirection is Both or Down. + :paramtype lower_bound: float + :keyword upper_bound: upper bound + should be specified when anomalyDetectorDirection is Both or Up. + :paramtype upper_bound: float + """ + + def __init__(self, anomaly_detector_direction, suppress_condition, **kwargs): + # type: (Union[str, AnomalyDetectorDirection], SuppressCondition, Any) -> None + self.anomaly_detector_direction = anomaly_detector_direction + self.suppress_condition = suppress_condition + self.lower_bound = kwargs.get('lower_bound', None) + self.upper_bound = kwargs.get('upper_bound', None) + + @classmethod + def _from_generated(cls, condition): + return cls( + anomaly_detector_direction=condition.anomaly_detector_direction, + suppress_condition=SuppressCondition._from_generated(condition.suppress_condition), + lower_bound=condition.lower_bound, + upper_bound=condition.upper_bound + ) if condition else None + + def _to_generated(self): + return _HardThresholdCondition( + lower_bound=self.lower_bound, + upper_bound=self.upper_bound, + anomaly_detector_direction=self.anomaly_detector_direction, + suppress_condition=_SuppressCondition( + min_number=self.suppress_condition.min_number, + min_ratio=self.suppress_condition.min_ratio, + ) + ) + + +class MetricSeriesGroupDetectionCondition(MetricDetectionCondition): + """MetricSeriesGroupAnomalyDetectionConditions. + + :param series_group_key: Required. dimension specified for series group. + :type series_group_key: dict[str, str] + :keyword cross_conditions_operator: condition operator + should be specified when combining multiple detection conditions. Possible values include: + "AND", "OR". + :paramtype cross_conditions_operator: str or + ~azure.ai.metricsadvisor.models.DetectionConditionsOperator + :keyword smart_detection_condition: + :paramtype smart_detection_condition: ~azure.ai.metricsadvisor.models.SmartDetectionCondition + :keyword hard_threshold_condition: + :paramtype hard_threshold_condition: ~azure.ai.metricsadvisor.models.HardThresholdCondition + :keyword change_threshold_condition: + :paramtype change_threshold_condition: ~azure.ai.metricsadvisor.models.ChangeThresholdCondition + """ + + def __init__(self, series_group_key, **kwargs): + # type: (Dict[str, str], Any) -> None + super(MetricSeriesGroupDetectionCondition, self).__init__(**kwargs) + self.series_group_key = series_group_key + + @classmethod + def _from_generated(cls, condition): + return cls( + series_group_key=condition.group.dimension, + cross_conditions_operator=condition.condition_operator, + smart_detection_condition=SmartDetectionCondition._from_generated(condition.smart_detection_condition), + hard_threshold_condition=HardThresholdCondition._from_generated(condition.hard_threshold_condition), + change_threshold_condition=ChangeThresholdCondition._from_generated(condition.change_threshold_condition) + ) + + def _to_generated(self): + return _DimensionGroupConfiguration( + group=_DimensionGroupIdentity(dimension=self.series_group_key), + condition_operator=self.cross_conditions_operator, + smart_detection_condition=self.smart_detection_condition._to_generated() + if self.smart_detection_condition else None, + hard_threshold_condition=self.hard_threshold_condition._to_generated() + if self.hard_threshold_condition else None, + change_threshold_condition=self.change_threshold_condition._to_generated() + if self.change_threshold_condition else None + ) + + +class MetricSingleSeriesDetectionCondition(MetricDetectionCondition): + """MetricSingleSeriesDetectionCondition. + + :param series_key: Required. dimension specified for series. + :type series_key: dict[str, str] + :keyword cross_conditions_operator: condition operator + should be specified when combining multiple detection conditions. Possible values include: + "AND", "OR". + :paramtype cross_conditions_operator: str or + ~azure.ai.metricsadvisor.models.DetectionConditionsOperator + :keyword smart_detection_condition: + :paramtype smart_detection_condition: ~azure.ai.metricsadvisor.models.SmartDetectionCondition + :keyword hard_threshold_condition: + :paramtype hard_threshold_condition: ~azure.ai.metricsadvisor.models.HardThresholdCondition + :keyword change_threshold_condition: + :paramtype change_threshold_condition: ~azure.ai.metricsadvisor.models.ChangeThresholdCondition + """ + + def __init__(self, series_key, **kwargs): + # type: (Dict[str, str], Any) -> None + super(MetricSingleSeriesDetectionCondition, self).__init__(**kwargs) + self.series_key = series_key + + @classmethod + def _from_generated(cls, condition): + return cls( + series_key=condition.series.dimension, + cross_conditions_operator=condition.condition_operator, + smart_detection_condition=SmartDetectionCondition._from_generated(condition.smart_detection_condition), + hard_threshold_condition=HardThresholdCondition._from_generated(condition.hard_threshold_condition), + change_threshold_condition=ChangeThresholdCondition._from_generated(condition.change_threshold_condition) + ) + + def _to_generated(self): + return _SeriesConfiguration( + series=_SeriesIdentity(dimension=self.series_key), + condition_operator=self.cross_conditions_operator, + smart_detection_condition=self.smart_detection_condition._to_generated() + if self.smart_detection_condition else None, + hard_threshold_condition=self.hard_threshold_condition._to_generated() + if self.hard_threshold_condition else None, + change_threshold_condition=self.change_threshold_condition._to_generated() + if self.change_threshold_condition else None + ) + + +class Metric(object): + """Metric. + + :param name: Required. metric name. + :type name: str + :keyword display_name: metric display name. + :paramtype display_name: str + :keyword description: metric description. + :paramtype description: str + :ivar id: metric id. + :vartype id: str + """ + + def __init__(self, name, **kwargs): + # type: (str, Any) -> None + self.name = name + self.id = kwargs.get('id', None) + self.display_name = kwargs.get('display_name', None) + self.description = kwargs.get('description', None) + + @classmethod + def _from_generated(cls, metric): + return cls( + id=metric.metric_id, + name=metric.metric_name, + display_name=metric.metric_display_name, + description=metric.metric_description + ) + + def _to_generated(self): + return _Metric( + metric_name=self.name, + metric_display_name=self.display_name, + metric_description=self.description + ) + + +class Dimension(object): + """Dimension. + + :param name: Required. dimension name. + :type name: str + :keyword display_name: dimension display name. + :paramtype display_name: str + """ + + def __init__(self, name, **kwargs): + # type: (str, Any) -> None + self.name = name + self.display_name = kwargs.get('display_name', None) + + @classmethod + def _from_generated(cls, dimension): + return cls( + name=dimension.dimension_name, + display_name=dimension.dimension_display_name, + ) + + def _to_generated(self): + return _Dimension( + dimension_name=self.name, + dimension_display_name=self.display_name + ) + + +class DataFeedIngestionProgress(object): + """DataFeedIngestionProgress. + + :ivar latest_success_timestamp: the timestamp of lastest success ingestion job. + null indicates not available. + :vartype latest_success_timestamp: ~datetime.datetime + :ivar latest_active_timestamp: the timestamp of lastest ingestion job with status update. + null indicates not available. + :vartype latest_active_timestamp: ~datetime.datetime + """ + + def __init__(self, **kwargs): + self.latest_success_timestamp = kwargs.get("latest_success_timestamp") + self.latest_active_timestamp = kwargs.get("latest_active_timestamp") + + @classmethod + def _from_generated(cls, resp): + return cls( + latest_success_timestamp=resp.latest_success_timestamp, + latest_active_timestamp=resp.latest_active_timestamp + ) + + +class MetricSeriesData(object): + """MetricSeriesData. + + :ivar definition: + :vartype definition: ~azure.ai.metricsadvisor.models.MetricSeriesDefinition + :ivar timestamp_list: timestamps of the data related to this time series. + :vartype timestamp_list: list[~datetime.datetime] + :ivar value_list: values of the data related to this time series. + :vartype value_list: list[float] + """ + + def __init__(self, **kwargs): + self.definition = kwargs.get('definition', None) + self.timestamp_list = kwargs.get('timestamp_list', None) + self.value_list = kwargs.get('value_list', None) + + @classmethod + def _from_generated(cls, data): + return cls( + definition=data.id, + timestamp_list=data.timestamp_list, + value_list=data.value_list + ) + + +class Alert(object): + """Alert + + :ivar id: alert id. + :vartype id: str + :ivar timestamp: anomaly time. + :vartype timestamp: ~datetime.datetime + :ivar created_on: created time. + :vartype created_on: ~datetime.datetime + :ivar modified_on: modified time. + :vartype modified_on: ~datetime.datetime + """ + + def __init__(self, **kwargs): + self.id = kwargs.get('id', None) + self.timestamp = kwargs.get('timestamp', None) + self.created_on = kwargs.get('created_on', None) + self.modified_on = kwargs.get('modified_on', None) + + @classmethod + def _from_generated(cls, alert): + return cls( + id=alert.alert_id, + timestamp=alert.timestamp, + created_on=alert.created_time, + modified_on=alert.modified_time + ) + + +DATA_FEED_TRANSFORM = { + "SqlServer": SQLServerDataFeed, + "AzureApplicationInsights": AzureApplicationInsightsDataFeed, + "AzureBlob": AzureBlobDataFeed, + "AzureCosmosDB": AzureCosmosDBDataFeed, + "AzureDataExplorer": AzureDataExplorerDataFeed, + "AzureTable": AzureTableDataFeed, + "HttpRequest": HttpRequestDataFeed, + "InfluxDB": InfluxDBDataFeed, + "MySql": MySqlDataFeed, + "PostgreSql": PostgreSqlDataFeed, + "MongoDB": MongoDBDataFeed, + "AzureDataLakeStorageGen2": AzureDataLakeStorageGen2DataFeed, + "Elasticsearch": ElasticsearchDataFeed +} + + +class Anomaly(msrest.serialization.Model): + """Anomaly. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar metric_id: metric unique id + + only return for alerting anomaly result. + :vartype metric_id: str + :ivar detection_configuration_id: anomaly detection configuration unique id + + only return for alerting anomaly result. + :vartype detection_configuration_id: str + :ivar timestamp: anomaly time. + :vartype timestamp: ~datetime.datetime + :ivar created_time: created time + + only return for alerting result. + :vartype created_time: ~datetime.datetime + :ivar modified_time: modified time + + only return for alerting result. + :vartype modified_time: ~datetime.datetime + :ivar dimension: dimension specified for series. + :vartype dimension: dict[str, str] + :ivar severity: anomaly severity. Possible values include: "Low", "Medium", "High". + :vartype anomaly_severity: str or ~azure.ai.metricsadvisor.models.Severity + :vartype severity: str + :ivar status: nomaly status. only return for alerting anomaly result. Possible + values include: "Active", "Resolved". + :vartype status: str + """ + + _validation = { + 'metric_id': {'readonly': True}, + 'detection_configuration_id': {'readonly': True}, + 'timestamp': {'readonly': True}, + 'created_on': {'readonly': True}, + 'modified_time': {'readonly': True}, + 'dimension': {'readonly': True}, + } + + _attribute_map = { + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'detection_configuration_id': {'key': 'detectionConfigurationId', 'type': 'str'}, + 'timestamp': {'key': 'timestamp', 'type': 'iso-8601'}, + 'created_on': {'key': 'createdOn', 'type': 'iso-8601'}, + 'modified_time': {'key': 'modifiedTime', 'type': 'iso-8601'}, + 'dimension': {'key': 'dimension', 'type': '{str}'}, + 'severity': {'key': 'severity', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(Anomaly, self).__init__(**kwargs) + self.metric_id = kwargs.get('metric_id', None) + self.detection_configuration_id = kwargs.get('detection_configuration_id', None) + self.timestamp = kwargs.get('timestamp', None) + self.created_on = kwargs.get('created_time', None) + self.modified_time = kwargs.get('modified_time', None) + self.dimension = kwargs.get('dimension', None) + self.severity = kwargs.get('severity', None) + self.status = kwargs.get('status', None) + + @classmethod + def _from_generated(cls, anomaly_result): + # type: (AnomalyResult) -> Anomaly + if not anomaly_result: + return None + severity = None + status = None + if anomaly_result.property: + severity = anomaly_result.property.anomaly_severity + status = anomaly_result.property.anomaly_status + + return cls( + metric_id=anomaly_result.metric_id, + detection_configuration_id=anomaly_result.anomaly_detection_configuration_id, + timestamp=anomaly_result.timestamp, + created_on=anomaly_result.created_time, + modified_time=anomaly_result.modified_time, + dimension=anomaly_result.dimension, + severity=severity, + status=status, + ) + + +class Incident(msrest.serialization.Model): + """Incident. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar metric_id: metric unique id + + only return for alerting incident result. + :vartype metric_id: str + :ivar detection_configuration_id: anomaly detection configuration unique id + + only return for alerting incident result. + :vartype detection_configuration_id: str + :ivar id: incident id. + :vartype id: str + :ivar start_time: incident start time. + :vartype start_time: ~datetime.datetime + :ivar last_time: incident last time. + :vartype last_time: ~datetime.datetime + :param dimension_key: dimension specified for series. + :type dimension_key: dict[str, str] + :ivar severity: max severity of latest anomalies in the incident. Possible values include: + "Low", "Medium", "High". + :vartype severity: str or ~azure.ai.metricsadvisor.models.Severity + :ivar incident_status: incident status + only return for alerting incident result. Possible values include: "Active", "Resolved". + :vartype status: str or ~azure.ai.metricsadvisor.models.IncidentPropertyIncidentStatus + """ + + _validation = { + 'metric_id': {'readonly': True}, + 'detection_configuration_id': {'readonly': True}, + 'id': {'readonly': True}, + 'start_time': {'readonly': True}, + 'last_time': {'readonly': True}, + } + + _attribute_map = { + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'detection_configuration_id': {'key': 'detectionConfigurationId', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'last_time': {'key': 'lastTime', 'type': 'iso-8601'}, + 'dimension_key': {'key': 'dimensionKey', 'type': '{str}'}, + 'severity': {'key': 'severity', 'type': 'str'}, + 'status': {'key': 'status', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(Incident, self).__init__(**kwargs) + self.metric_id = kwargs.get('metric_id', None) + self.detection_configuration_id = kwargs.get('detection_configuration_id', None) + self.incident_id = kwargs.get('incident_id', None) + self.start_time = kwargs.get('start_time', None) + self.last_time = kwargs.get('last_time', None) + self.dimension_key = kwargs.get('dimension_key', None) + self.severity = kwargs.get('severity', None) + self.status = kwargs.get('status', None) + + @classmethod + def _from_generated(cls, incident_result): + # type: (IncidentResult) -> Incident + if not incident_result: + return None + dimension_key = incident_result.root_node.dimension if incident_result.root_node else None + severity = None + status = None + if incident_result.property: + severity = incident_result.property.max_severity + status = incident_result.property.incident_status + return cls( + metric_id=incident_result.metric_id, + detection_configuration_id=incident_result.anomaly_detection_configuration_id, + incident_id=incident_result.incident_id, + start_time=incident_result.start_time, + last_time=incident_result.last_time, + dimension_key=dimension_key, + severity=severity, + status=status, + ) + +class IncidentRootCause(msrest.serialization.Model): + """Incident Root Cause. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param dimension_key: dimension specified for series group. + :type dimension_key: dict[str, str] + :ivar path: drilling down path from query anomaly to root cause. + :vartype path: list[str] + :ivar score: score. + :vartype score: float + :ivar description: description. + :vartype description: str + """ + + _validation = { + 'path': {'readonly': True}, + 'score': {'readonly': True}, + 'description': {'readonly': True}, + } + + _attribute_map = { + 'dimension_key': {'key': 'dimensionKey', 'type': '{str}'}, + 'path': {'key': 'path', 'type': '[str]'}, + 'score': {'key': 'score', 'type': 'float'}, + 'description': {'key': 'description', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(IncidentRootCause, self).__init__(**kwargs) + self.dimension_key = kwargs.get('dimension_key', None) + self.path = kwargs.get('path', None) + self.score = kwargs.get('score', None) + self.description = kwargs.get('description', None) + + @classmethod + def _from_generated(cls, root_cause): + # type: (RootCause) -> IncidentRootCause + if not root_cause: + return None + dimension_key = root_cause.root_cause.dimension if root_cause.root_cause else None + return cls( + dimension_key=dimension_key, + path=root_cause.path, + score=root_cause.score, + description=root_cause.description, + ) + +class AnomalyFeedback(msrest.serialization.Model): + """AnomalyFeedback. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param feedback_type: Required. feedback type.Constant filled by server. Possible values + include: "Anomaly", "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :ivar id: feedback unique id. + :vartype id: str + :ivar created_time: feedback created time. + :vartype created_time: ~datetime.datetime + :ivar user_principal: user who gives this feedback. + :vartype user_principal: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param dimension_key: Required. metric dimension filter. + :type dimension_key: dict[str, str] + :param start_time: Required. the start timestamp of feedback timerange. + :type start_time: ~datetime.datetime + :param end_time: Required. the end timestamp of feedback timerange, when equals to startTime + means only one timestamp. + :type end_time: ~datetime.datetime + :param value: Required. Possible values include: "AutoDetect", "Anomaly", "NotAnomaly". + :type value: str or ~azure.ai.metricsadvisor.models.AnomalyValue + :keyword anomaly_detection_configuration_id: the corresponding anomaly detection configuration of + this feedback. + :paramtype anomaly_detection_configuration_id: str + :keyword anomaly_detection_configuration_snapshot: + :paramtype anomaly_detection_configuration_snapshot: + ~azure.ai.metricsadvisor.models.AnomalyDetectionConfiguration + """ + + _validation = { + 'feedback_type': {'required': True}, + 'id': {'readonly': True}, + 'created_time': {'readonly': True}, + 'user_principal': {'readonly': True}, + 'metric_id': {'required': True}, + 'dimension_key': {'required': True}, + 'start_time': {'required': True}, + 'end_time': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'user_principal': {'key': 'userPrincipal', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_key': {'key': 'dimensionKey', 'type': '{str}'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'value': {'key': 'value', 'type': 'str'}, + 'anomaly_detection_configuration_id': {'key': 'anomalyDetectionConfigurationId', 'type': 'str'}, + 'anomaly_detection_configuration_snapshot': {'key': 'anomalyDetectionConfigurationSnapshot', + 'type': 'AnomalyDetectionConfiguration'}, + } + + def __init__( + self, + metric_id, + dimension_key, + start_time, + end_time, + value, + **kwargs + ): + super(AnomalyFeedback, self).__init__(**kwargs) + self.feedback_type = 'Anomaly' # type: str + self.id = kwargs.get('id', None) + self.created_time = kwargs.get('created_time', None) + self.user_principal = kwargs.get('user_principal', None) + self.metric_id = metric_id + self.dimension_key = dimension_key + self.start_time = start_time + self.end_time = end_time + self.value = value + self.anomaly_detection_configuration_id = kwargs.get('anomaly_detection_configuration_id', None) + self.anomaly_detection_configuration_snapshot = kwargs.get('anomaly_detection_configuration_snapshot', None) + + @classmethod + def _from_generated(cls, anomaly_feedback): + # type: (_AnomalyFeedback) -> AnomalyFeedback + if not anomaly_feedback: + return None + dimension_key = anomaly_feedback.dimension_filter.dimension + value = anomaly_feedback.value.anomaly_value + return cls( + id=anomaly_feedback.feedback_id, + created_time=anomaly_feedback.created_time, + user_principal=anomaly_feedback.user_principal, + metric_id=anomaly_feedback.metric_id, + dimension_key=dimension_key, + start_time=anomaly_feedback.start_time, + end_time=anomaly_feedback.end_time, + value=value, + anomaly_detection_configuration_id=anomaly_feedback.anomaly_detection_configuration_id, + anomaly_detection_configuration_snapshot=anomaly_feedback.anomaly_detection_configuration_snapshot, + ) + + def _to_generated(self): + # type: (AnomalyFeedback) -> _AnomalyFeedback + dimension_filter = FeedbackDimensionFilter(dimension=self.dimension_key) + value = AnomalyFeedbackValue(anomaly_value=self.value) + return _AnomalyFeedback( + feedback_id=self.id, + created_time=self.created_time, + user_principal=self.user_principal, + metric_id=self.metric_id, + dimension_filter=dimension_filter, + start_time=self.start_time, + end_time=self.end_time, + value=value, + anomaly_detection_configuration_id=self.anomaly_detection_configuration_id, + anomaly_detection_configuration_snapshot=self.anomaly_detection_configuration_snapshot + ) + +class ChangePointFeedback(msrest.serialization.Model): + """ChangePointFeedback. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param feedback_type: Required. feedback type.Constant filled by server. Possible values + include: "Anomaly", "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :ivar id: feedback unique id. + :vartype id: str + :ivar created_time: feedback created time. + :vartype created_time: ~datetime.datetime + :ivar user_principal: user who gives this feedback. + :vartype user_principal: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param dimension_key: Required. metric dimension filter. + :type dimension_key: dict[str, str] + :param start_time: Required. the start timestamp of feedback timerange. + :type start_time: ~datetime.datetime + :param end_time: Required. the end timestamp of feedback timerange, when equals to startTime + means only one timestamp. + :type end_time: ~datetime.datetime + :param value: Required. Possible values include: "AutoDetect", "ChangePoint", "NotChangePoint". + :type value: str or ~azure.ai.metricsadvisor.models.ChangePointValue + """ + + _validation = { + 'feedback_type': {'required': True}, + 'id': {'readonly': True}, + 'created_time': {'readonly': True}, + 'user_principal': {'readonly': True}, + 'metric_id': {'required': True}, + 'dimension_key': {'required': True}, + 'start_time': {'required': True}, + 'end_time': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'user_principal': {'key': 'userPrincipal', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_key': {'key': 'dimensionKey', 'type': '{str}'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'value': {'key': 'value', 'type': 'str'}, + } + + def __init__( + self, + metric_id, + dimension_key, + start_time, + end_time, + value, + **kwargs + ): + super(ChangePointFeedback, self).__init__(**kwargs) + self.feedback_type = 'ChangePoint' # type: str + self.id = kwargs.get('id', None) + self.created_time = kwargs.get('created_time', None) + self.user_principal = kwargs.get('user_principal', None) + self.metric_id = metric_id + self.dimension_key = dimension_key + self.start_time = start_time + self.end_time = end_time + self.value = value + + @classmethod + def _from_generated(cls, change_point_feedback): + # type: (_ChangePointFeedback) -> ChangePointFeedback + if not change_point_feedback: + return None + dimension_key = change_point_feedback.dimension_filter.dimension + value = change_point_feedback.value.change_point_value + return cls( + id=change_point_feedback.feedback_id, + created_time=change_point_feedback.created_time, + user_principal=change_point_feedback.user_principal, + metric_id=change_point_feedback.metric_id, + dimension_key=dimension_key, + start_time=change_point_feedback.start_time, + end_time=change_point_feedback.end_time, + value=value, + ) + + def _to_generated(self): + # type: (ChangePointFeedback) -> _ChangePointFeedback + dimension_filter = FeedbackDimensionFilter(dimension=self.dimension_key) + value = ChangePointFeedbackValue(change_point_value=self.value) + return _ChangePointFeedback( + feedback_id=self.id, + created_time = self.created_time, + user_principal=self.user_principal, + metric_id=self.metric_id, + dimension_filter=dimension_filter, + start_time=self.start_time, + end_time=self.end_time, + value=value, + ) + +class CommentFeedback(msrest.serialization.Model): + """CommentFeedback. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param feedback_type: Required. feedback type.Constant filled by server. Possible values + include: "Anomaly", "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :ivar id: feedback unique id. + :vartype id: str + :ivar created_time: feedback created time. + :vartype created_time: ~datetime.datetime + :ivar user_principal: user who gives this feedback. + :vartype user_principal: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param dimension_key: Required. metric dimension filter. + :type dimension_key: dict[str, str] + :param start_time: the start timestamp of feedback timerange. + :type start_time: ~datetime.datetime + :param end_time: the end timestamp of feedback timerange, when equals to startTime means only + one timestamp. + :type end_time: ~datetime.datetime + :param value: Required. the comment string. + :type value: str + """ + + _validation = { + 'feedback_type': {'required': True}, + 'id': {'readonly': True}, + 'created_time': {'readonly': True}, + 'user_principal': {'readonly': True}, + 'metric_id': {'required': True}, + 'dimension_key': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'user_principal': {'key': 'userPrincipal', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_key': {'key': 'dimensionKey', 'type': '{str}'}, + 'start_time': {'key': 'startTime', 'type': 'iso-8601'}, + 'end_time': {'key': 'endTime', 'type': 'iso-8601'}, + 'value': {'key': 'value', 'type': 'str'}, + } + + def __init__( + self, + metric_id, + dimension_key, + start_time, + end_time, + value, + **kwargs + ): + super(CommentFeedback, self).__init__(**kwargs) + self.feedback_type = 'Comment' # type: str + self.id = kwargs.get('id', None) + self.created_time = kwargs.get('created_time', None) + self.user_principal = kwargs.get('user_principal', None) + self.metric_id = metric_id + self.dimension_key = dimension_key + self.start_time = start_time + self.end_time = end_time + self.value = value + + @classmethod + def _from_generated(cls, comment_feedback): + # type: (_CommentFeedback) -> CommentFeedback + if not comment_feedback: + return None + dimension_key = comment_feedback.dimension_filter.dimension + value = comment_feedback.value.comment_value + return cls( + id=comment_feedback.feedback_id, + created_time=comment_feedback.created_time, + user_principal=comment_feedback.user_principal, + metric_id=comment_feedback.metric_id, + dimension_key=dimension_key, + start_time=comment_feedback.start_time, + end_time=comment_feedback.end_time, + value=value, + ) + + def _to_generated(self): + # type: (CommentFeedback) -> _CommentFeedback + dimension_filter = FeedbackDimensionFilter(dimension=self.dimension_key) + value = CommentFeedbackValue(comment_value=self.value) + return _CommentFeedback( + feedback_id=self.id, + created_time = self.created_time, + user_principal=self.user_principal, + metric_id=self.metric_id, + dimension_filter=dimension_filter, + start_time=self.start_time, + end_time=self.end_time, + value=value, + ) + +class PeriodFeedback(msrest.serialization.Model): + """PeriodFeedback. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :param feedback_type: Required. feedback type.Constant filled by server. Possible values + include: "Anomaly", "ChangePoint", "Period", "Comment". + :type feedback_type: str or ~azure.ai.metricsadvisor.models.FeedbackType + :ivar id: feedback unique id. + :vartype id: str + :ivar created_time: feedback created time. + :vartype created_time: ~datetime.datetime + :ivar user_principal: user who gives this feedback. + :vartype user_principal: str + :param metric_id: Required. metric unique id. + :type metric_id: str + :param dimension_key: Required. metric dimension filter. + :type dimension_key: dict[str, str] + :param value: Required. + :type value: int + :param period_type: Required. the type of setting period. Possible values include: + "AutoDetect", "AssignValue". + :type period_type: str or ~azure.ai.metricsadvisor.models.PeriodType + """ + + _validation = { + 'feedback_type': {'required': True}, + 'id': {'readonly': True}, + 'created_time': {'readonly': True}, + 'user_principal': {'readonly': True}, + 'metric_id': {'required': True}, + 'dimension_key': {'required': True}, + 'value': {'required': True}, + 'period_type': {'required': True}, + } + + _attribute_map = { + 'feedback_type': {'key': 'feedbackType', 'type': 'str'}, + 'id': {'key': 'id', 'type': 'str'}, + 'created_time': {'key': 'createdTime', 'type': 'iso-8601'}, + 'user_principal': {'key': 'userPrincipal', 'type': 'str'}, + 'metric_id': {'key': 'metricId', 'type': 'str'}, + 'dimension_key': {'key': 'dimensionKey', 'type': '{str}'}, + 'value': {'key': 'value', 'type': 'int'}, + 'period_type': {'key': 'periodType', 'type': 'str'}, + } + + def __init__( + self, + metric_id, + dimension_key, + value, + period_type, + **kwargs + ): + super(PeriodFeedback, self).__init__(**kwargs) + self.feedback_type = 'Period' # type: str + self.id = kwargs.get('id', None) + self.created_time = kwargs.get('created_time', None) + self.user_principal = kwargs.get('user_principal', None) + self.metric_id = metric_id + self.dimension_key = dimension_key + self.value = value + self.period_type = period_type + + @classmethod + def _from_generated(cls, period_feedback): + # type: (_PeriodFeedback) -> PeriodFeedback + if not period_feedback: + return None + dimension_key = period_feedback.dimension_filter.dimension + value = period_feedback.value.period_value + period_type = period_feedback.value.period_type + return cls( + id=period_feedback.feedback_id, + created_time=period_feedback.created_time, + user_principal=period_feedback.user_principal, + metric_id=period_feedback.metric_id, + dimension_key=dimension_key, + value=value, + period_type=period_type, + ) + + def _to_generated(self): + # type: (PeriodFeedback) -> _PeriodFeedback + dimension_filter = FeedbackDimensionFilter(dimension=self.dimension_key) + value = PeriodFeedbackValue(period_type=self.period_type, period_value=self.value) + return _CommentFeedback( + feedback_id=self.id, + created_time = self.created_time, + user_principal=self.user_principal, + metric_id=self.metric_id, + dimension_filter=dimension_filter, + value=value, + ) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/py.typed b/sdk/metricsadvisor/azure-ai-metricsadvisor/azure/ai/metricsadvisor/py.typed new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/dev_requirements.txt b/sdk/metricsadvisor/azure-ai-metricsadvisor/dev_requirements.txt new file mode 100644 index 000000000000..dd7dbde09bd3 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/dev_requirements.txt @@ -0,0 +1,5 @@ +-e ../../../tools/azure-sdk-tools +-e ../../../tools/azure-devtools +../../core/azure-core +aiohttp>=3.0; python_version >= '3.5' +msrest>=0.6.12 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/README.md b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/README.md new file mode 100644 index 000000000000..4887592a4310 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/README.md @@ -0,0 +1,73 @@ +--- +page_type: sample +languages: + - python +products: + - azure + - azure-cognitive-services + - azure-metrics-advisor +urlFragment: metricsadvisor-samples +--- + +# Samples for Azure Metrics Advisor client library for Python + +These code samples show common scenario operations with the Azure Metrics Advisor client library. +The async versions of the samples require Python 3.5 or later. + +|**File Name**|**Description**| +|----------------|-------------| +|[sample_authentication.py][sample_authentication] and [sample_authentication_async.py][sample_authentication_async]|Authenticate the clients| +|[sample_data_feeds.py][sample_data_feeds] and [sample_data_feeds_async.py][sample_data_feeds_async]|Create, list, get, update, and delete data feeds| +|[sample_ingestion.py][sample_ingestion] and [sample_ingestion_async.py][sample_ingestion_async]|Check on the data feed ingestion progress, list ingestion statuses, and refresh data feed ingestion| +|[sample_anomaly_detection_configuration.py][sample_anomaly_detection_configuration] and [sample_anomaly_detection_configuration_async.py][sample_anomaly_detection_configuration_async]|Create, list, get, update, and delete anomaly detection configurations| +|[sample_anomaly_alert_configuration.py][sample_anomaly_alert_configuration] and [sample_anomaly_alert_configuration_async.py][sample_anomaly_alert_configuration_async]|Create, list, get, update, and delete anomaly alert configurations. Also list alerts and anomalies for a specific alert configuration.| +|[sample_hooks.py][sample_hooks] and [sample_hooks_async.py][sample_hooks_async]|Create, list, get, update, and delete hooks| +|[sample_feedback.py][sample_feedback] and [sample_feedback_async.py][sample_feedback_async]|Add, get, and list feedback for the anomaly detection result| + + +## Prerequisites +* Python 2.7, or 3.5 or later is required to use this package (3.5 or later if using asyncio) +* You must have an [Azure subscription][azure_subscription] and an +[Azure Metrics Advisor account][portal_metrics_advisor_account] to run these samples. + +## Setup + +1. Install the Azure Metrics Advisor client library for Python with [pip][pip]: + +```bash +pip install azure-ai-metricsadvisor --pre +``` + +2. Clone or download this sample repository +3. Open the sample folder in Visual Studio Code or your IDE of choice. + +## Running the samples + +1. Open a terminal window and `cd` to the directory that the samples are saved in. +2. Set the environment variables specified in the sample file you wish to run. +3. Follow the usage described in the file, e.g. `python sample_data_feeds.py` + +## Next steps + +Check out the [reference documentation][reference_documentation] to learn more about +what you can do with the Azure Metrics Advisor client library. + +[pip]: https://pypi.org/project/pip/ +[azure_subscription]: https://azure.microsoft.com/free/ +[portal_metrics_advisor_account]: https://ms.portal.azure.com/#create/Microsoft.CognitiveServicesMetricsAdvisor +[reference_documentation]: https://aka.ms/azsdk/python/metricsadvisor/docs + +[sample_authentication]: https://aka.ms/azsdk/python/metricsadvisor/docs +[sample_authentication_async]: https://aka.ms/azsdk/python/metricsadvisor/docs +[sample_data_feeds]: https://aka.ms/azsdk/python/metricsadvisor/docs +[sample_data_feeds_async]: https://aka.ms/azsdk/python/metricsadvisor/docs +[sample_ingestion]: https://aka.ms/azsdk/python/metricsadvisor/docs +[sample_ingestion_async]: https://aka.ms/azsdk/python/metricsadvisor/docs +[sample_anomaly_detection_configuration]: https://aka.ms/azsdk/python/metricsadvisor/docs +[sample_anomaly_detection_configuration_async]: https://aka.ms/azsdk/python/metricsadvisor/docs +[sample_anomaly_alert_configuration]: https://aka.ms/azsdk/python/metricsadvisor/docs +[sample_anomaly_alert_configuration_async]: https://aka.ms/azsdk/python/metricsadvisor/docs +[sample_hooks]: https://aka.ms/azsdk/python/metricsadvisor/docs +[sample_hooks_async]: https://aka.ms/azsdk/python/metricsadvisor/docs +[sample_feedback]: https://aka.ms/azsdk/python/metricsadvisor/docs +[sample_feedback_async]: https://aka.ms/azsdk/python/metricsadvisor/docs diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_anomaly_alert_configuration_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_anomaly_alert_configuration_async.py new file mode 100644 index 000000000000..1dcec1272817 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_anomaly_alert_configuration_async.py @@ -0,0 +1,330 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_anomaly_alert_configuration_async.py + +DESCRIPTION: + This sample demonstrates how to create, get, list, query update, and delete anomaly alert configurations + under your Metrics Advisor account. + +USAGE: + python sample_anomaly_alert_configuration_async.py + + Set the environment variables with your own values before running the sample: + 1) METRICS_ADVISOR_ENDPOINT - the endpoint of your Azure Metrics Advisor service + 2) METRICS_ADVISOR_SUBSCRIPTION_KEY - Metrics Advisor service subscription key + 3) METRICS_ADVISOR_API_KEY - Metrics Advisor service API key + 4) METRICS_ADVISOR_DETECTION_CONFIGURATION_ID - the ID of an existing detection configuration + 5) METRICS_ADVISOR_HOOK_ID - the ID of hook you would like to be associated with the alert configuration +""" + +import os +import asyncio + + +async def sample_create_alert_config_async(): + # [START create_anomaly_alert_config_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + from azure.ai.metricsadvisor.models import ( + MetricAlertConfiguration, + MetricAnomalyAlertScope, + TopNGroupScope, + MetricAnomalyAlertConditions, + SeverityCondition, + MetricBoundaryCondition, + MetricAnomalyAlertSnoozeCondition + ) + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + anomaly_detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID") + hook_id = os.getenv("METRICS_ADVISOR_HOOK_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + alert_config = await client.create_anomaly_alert_configuration( + name="my alert config", + description="alert config description", + cross_metrics_operator="AND", + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=anomaly_detection_configuration_id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ), + MetricAlertConfiguration( + detection_configuration_id=anomaly_detection_configuration_id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=10, + period=5, + min_top_count=5 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Up", + upper=50 + ) + ), + alert_snooze_condition=MetricAnomalyAlertSnoozeCondition( + auto_snooze=2, + snooze_scope="Metric", + only_for_successive=True + ) + ), + ], + hook_ids=[hook_id] + ) + + return alert_config + # [END create_anomaly_alert_config_async] + + +async def sample_get_alert_config_async(alert_config_id): + # [START get_anomaly_alert_config_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + config = await client.get_anomaly_alert_configuration(alert_config_id) + + print("Alert config ID: {}".format(config.id)) + print("Alert config name: {}".format(config.name)) + print("Description: {}".format(config.description)) + print("Ids of hooks associated with alert: {}".format(config.hook_ids)) + print("Use {} operator for multiple alert conditions\n".format(config.cross_metrics_operator)) + + print("Alert uses detection configuration ID: {}".format( + config.metric_alert_configurations[0].detection_configuration_id + )) + print("Alert scope type: {}".format(config.metric_alert_configurations[0].alert_scope.scope_type)) + print("Alert severity condition: min- {}, max- {}".format( + config.metric_alert_configurations[0].alert_conditions.severity_condition.min_alert_severity, + config.metric_alert_configurations[0].alert_conditions.severity_condition.max_alert_severity, + )) + print("\nAlert uses detection configuration ID: {}".format( + config.metric_alert_configurations[1].detection_configuration_id + )) + print("Alert scope type: {}".format(config.metric_alert_configurations[1].alert_scope.scope_type)) + print("Top N: {}".format(config.metric_alert_configurations[1].alert_scope.top_n_group_in_scope.top)) + print("Point count used to look back: {}".format( + config.metric_alert_configurations[1].alert_scope.top_n_group_in_scope.period + )) + print("Min top count: {}".format( + config.metric_alert_configurations[1].alert_scope.top_n_group_in_scope.min_top_count + )) + print("Alert metric boundary condition direction: {}, upper bound: {}".format( + config.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.direction, + config.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.upper, + )) + print("Alert snooze condition, snooze point count: {}".format( + config.metric_alert_configurations[1].alert_snooze_condition.auto_snooze, + )) + print("Alert snooze scope: {}".format( + config.metric_alert_configurations[1].alert_snooze_condition.snooze_scope, + )) + print("Snooze only for successive anomalies?: {}".format( + config.metric_alert_configurations[1].alert_snooze_condition.only_for_successive, + )) + # [END get_anomaly_alert_config_async] + + +async def sample_list_alert_configs_async(): + # [START list_anomaly_alert_configs_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + anomaly_detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + configs = client.list_anomaly_alert_configurations(anomaly_detection_configuration_id) + async for config in configs: + print("Alert config name: {}".format(config.name)) + print("Alert description: {}".format(config.description)) + print("Ids of hooks associated with alert: {}\n".format(config.hook_ids)) + + # [END list_anomaly_alert_configs_async] + + +async def sample_list_alerts_for_alert_config_async(alert_config_id): + # [START list_alerts_for_alert_config_async] + import datetime + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + results = client.list_alerts_for_alert_configuration( + alert_configuration_id=alert_config_id, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + time_mode="AnomalyTime", + ) + tolist = [] + async for result in results: + tolist.append(result) + print("Alert id: {}".format(result.id)) + print("Create on: {}".format(result.created_on)) + return tolist + + # [END list_alerts_for_alert_config_async] + + +async def sample_list_anomalies_for_alert_async(alert_config_id, alert_id): + # [START list_anomalies_for_alert_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + results = client.list_anomalies_for_alert( + alert_configuration_id=alert_config_id, + alert_id=alert_id, + ) + async for result in results: + print("Create on: {}".format(result.created_on)) + print("Severity: {}".format(result.severity)) + print("Status: {}".format(result.status)) + + # [END list_anomalies_for_alert_async] + + +async def sample_update_alert_config_async(alert_config): + # [START update_anomaly_alert_config_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + from azure.ai.metricsadvisor.models import ( + MetricAlertConfiguration, + MetricAnomalyAlertScope, + MetricAnomalyAlertConditions, + MetricBoundaryCondition + ) + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + anomaly_detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + alert_config.name = "updated config name" + additional_alert = MetricAlertConfiguration( + detection_configuration_id=anomaly_detection_configuration_id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Down", + lower=5 + ) + ) + ) + alert_config.metric_alert_configurations.append(additional_alert) + + async with client: + updated = await client.update_anomaly_alert_configuration( + alert_config, + cross_metrics_operator="OR", + description="updated alert config" + ) + + print("Updated alert name: {}".format(updated.name)) + print("Updated alert description: {}".format(updated.description)) + print("Updated cross metrics operator: {}".format(updated.cross_metrics_operator)) + print("Updated alert condition configuration scope type: {}".format( + updated.metric_alert_configurations[2].alert_scope.scope_type + )) + + # [END update_anomaly_alert_config_async] + + +async def sample_delete_alert_config_async(alert_config_id): + # [START delete_anomaly_alert_config_async] + from azure.core.exceptions import ResourceNotFoundError + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + await client.delete_anomaly_alert_configuration(alert_config_id) + + try: + await client.get_anomaly_alert_configuration(alert_config_id) + except ResourceNotFoundError: + print("Alert configuration successfully deleted.") + # [END delete_anomaly_alert_config_async] + + +async def main(): + print("---Creating anomaly alert configuration...") + alert_config = await sample_create_alert_config_async() + print("Anomaly alert configuration successfully created...") + print("\n---Get an anomaly alert configuration...") + await sample_get_alert_config_async(alert_config.id) + print("\n---List anomaly alert configurations...") + await sample_list_alert_configs_async() + print("\n---Query anomaly detection results...") + alerts = await sample_list_alerts_for_alert_config_async() + if len(alerts) > 0: + print("\n---Query anomalies using alert id...") + alert_id = alerts[0].id + await sample_list_anomalies_for_alert_async(alert_config.id, alert_id) + print("\n---Update an anomaly alert configuration...") + await sample_update_alert_config_async(alert_config) + print("\n---Delete an anomaly alert configuration...") + await sample_delete_alert_config_async(alert_config.id) + +if __name__ == '__main__': + loop = asyncio.get_event_loop() + loop.run_until_complete(main()) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_anomaly_detection_configuration_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_anomaly_detection_configuration_async.py new file mode 100644 index 000000000000..bf6e7648758f --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_anomaly_detection_configuration_async.py @@ -0,0 +1,267 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_anomaly_detection_configuration_async.py + +DESCRIPTION: + This sample demonstrates how to create, get, list, update, and delete anomaly detection configurations + under your Metrics Advisor account. + +USAGE: + python sample_anomaly_detection_configuration_async.py + + Set the environment variables with your own values before running the sample: + 1) METRICS_ADVISOR_ENDPOINT - the endpoint of your Azure Metrics Advisor service + 2) METRICS_ADVISOR_SUBSCRIPTION_KEY - Metrics Advisor service subscription key + 3) METRICS_ADVISOR_API_KEY - Metrics Advisor service API key + 4) METRICS_ADVISOR_METRIC_ID - the ID of an metric from an existing data feed +""" + +import os +import asyncio + + +async def sample_create_detection_config_async(): + # [START create_anomaly_detection_config_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + from azure.ai.metricsadvisor.models import ( + ChangeThresholdCondition, + HardThresholdCondition, + SmartDetectionCondition, + SuppressCondition, + MetricDetectionCondition, + ) + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + change_threshold_condition = ChangeThresholdCondition( + anomaly_detector_direction="Both", + change_percentage=20, + shift_point=10, + within_range=True, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + hard_threshold_condition = HardThresholdCondition( + anomaly_detector_direction="Up", + upper_bound=100, + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + smart_detection_condition = SmartDetectionCondition( + anomaly_detector_direction="Up", + sensitivity=10, + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + async with client: + detection_config = await client.create_metric_anomaly_detection_configuration( + name="my_detection_config", + metric_id=metric_id, + description="anomaly detection config for metric", + whole_series_detection_condition=MetricDetectionCondition( + cross_conditions_operator="OR", + change_threshold_condition=change_threshold_condition, + hard_threshold_condition=hard_threshold_condition, + smart_detection_condition=smart_detection_condition + ) + ) + + return detection_config + # [END create_anomaly_detection_config_async] + + +async def sample_get_detection_config_async(detection_config_id): + # [START get_anomaly_detection_config_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + config = await client.get_metric_anomaly_detection_configuration(detection_config_id) + + print("Detection config name: {}".format(config.name)) + print("Description: {}".format(config.description)) + print("Metric ID: {}".format(config.metric_id)) + + print("\nDetection conditions specified for configuration...") + print("\nWhole Series Detection Conditions:\n") + conditions = config.whole_series_detection_condition + + print("Use {} operator for multiple detection conditions".format(conditions.cross_conditions_operator)) + + print("Smart Detection Condition:") + print("- Sensitivity: {}".format(conditions.smart_detection_condition.sensitivity)) + print("- Detection direction: {}".format(conditions.smart_detection_condition.anomaly_detector_direction)) + print("- Suppress conditions: minimum number: {}; minimum ratio: {}".format( + conditions.smart_detection_condition.suppress_condition.min_number, + conditions.smart_detection_condition.suppress_condition.min_ratio + )) + + print("Hard Threshold Condition:") + print("- Lower bound: {}".format(conditions.hard_threshold_condition.lower_bound)) + print("- Upper bound: {}".format(conditions.hard_threshold_condition.upper_bound)) + print("- Detection direction: {}".format(conditions.smart_detection_condition.anomaly_detector_direction)) + print("- Suppress conditions: minimum number: {}; minimum ratio: {}".format( + conditions.smart_detection_condition.suppress_condition.min_number, + conditions.smart_detection_condition.suppress_condition.min_ratio + )) + + print("Change Threshold Condition:") + print("- Change percentage: {}".format(conditions.change_threshold_condition.change_percentage)) + print("- Shift point: {}".format(conditions.change_threshold_condition.shift_point)) + print("- Detect anomaly if within range: {}".format(conditions.change_threshold_condition.within_range)) + print("- Detection direction: {}".format(conditions.smart_detection_condition.anomaly_detector_direction)) + print("- Suppress conditions: minimum number: {}; minimum ratio: {}".format( + conditions.smart_detection_condition.suppress_condition.min_number, + conditions.smart_detection_condition.suppress_condition.min_ratio + )) + + # [END get_anomaly_detection_config_async] + + +async def sample_list_detection_configs_async(): + # [START list_anomaly_detection_configs_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + configs = client.list_metric_anomaly_detection_configurations(metric_id=metric_id) + async for config in configs: + print("Detection config name: {}".format(config.name)) + print("Description: {}".format(config.description)) + print("Metric ID: {}\n".format(config.metric_id)) + + # [END list_anomaly_detection_configs_async] + + +async def sample_update_detection_config_async(detection_config): + # [START update_anomaly_detection_config_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + from azure.ai.metricsadvisor.models import ( + MetricSeriesGroupDetectionCondition, + MetricSingleSeriesDetectionCondition, + SmartDetectionCondition, + SuppressCondition + ) + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + detection_config.name = "updated config name" + detection_config.description = "updated with more detection conditions" + smart_detection_condition = SmartDetectionCondition( + anomaly_detector_direction="Up", + sensitivity=10, + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + + async with client: + updated = await client.update_metric_anomaly_detection_configuration( + detection_config, + series_group_detection_conditions=[ + MetricSeriesGroupDetectionCondition( + series_group_key={"city": "Seoul"}, + smart_detection_condition=smart_detection_condition + ) + ], + series_detection_conditions=[ + MetricSingleSeriesDetectionCondition( + series_key={"city": "Osaka", "category": "Cell Phones"}, + smart_detection_condition=smart_detection_condition + ) + ] + ) + print("Updated detection name: {}".format(updated.name)) + print("Updated detection description: {}".format(updated.description)) + print("Updated detection condition for series group: {}".format( + updated.series_group_detection_conditions[0].series_group_key + )) + print("Updated detection condition for series: {}".format( + updated.series_detection_conditions[0].series_key + )) + + # [END update_anomaly_detection_config_async] + + +async def sample_delete_detection_config_async(detection_config_id): + # [START delete_anomaly_detection_config_async] + from azure.core.exceptions import ResourceNotFoundError + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + await client.delete_metric_anomaly_detection_configuration(detection_config_id) + + try: + await client.get_metric_anomaly_detection_configuration(detection_config_id) + except ResourceNotFoundError: + print("Detection configuration successfully deleted.") + # [END delete_anomaly_detection_config_async] + + +async def main(): + print("---Creating anomaly detection configuration...") + detection_config = await sample_create_detection_config_async() + print("Anomaly detection configuration successfully created...") + print("\n---Get an anomaly detection configuration...") + await sample_get_detection_config_async(detection_config.id) + print("\n---List anomaly detection configurations...") + await sample_list_detection_configs_async() + print("\n---Update an anomaly detection configuration...") + await sample_update_detection_config_async(detection_config) + print("\n---Delete an anomaly detection configuration...") + await sample_delete_detection_config_async(detection_config.id) + + +if __name__ == '__main__': + loop = asyncio.get_event_loop() + loop.run_until_complete(main()) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_authentication_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_authentication_async.py new file mode 100644 index 000000000000..d831d538db12 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_authentication_async.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_authentication_async.py + +DESCRIPTION: + This sample demonstrates how to authenticate with the Azure Metrics Advisor + service with Subscription key and API key. + +USAGE: + python sample_authentication_async.py + + Set the environment variables with your own values before running the sample: + 1) METRICS_ADVISOR_ENDPOINT - the endpoint of your Azure Metrics Advisor service + 2) METRICS_ADVISOR_SUBSCRIPTION_KEY - Metrics Advisor service subscription key + 3) METRICS_ADVISOR_API_KEY - Metrics Advisor service API key +""" + +import os +import asyncio + + +async def authentication_client_with_metrics_advisor_credential_async(): + # [START authentication_client_with_metrics_advisor_credential_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + # [END authentication_client_with_metrics_advisor_credential_async] + + +def authentication_administration_client_with_metrics_advisor_credential_async(): + # [START administration_client_with_metrics_advisor_credential_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + # [END administration_client_with_metrics_advisor_credential_async] + + +async def main(): + await authentication_client_with_metrics_advisor_credential_async() + await authentication_administration_client_with_metrics_advisor_credential_async() + + +if __name__ == '__main__': + loop = asyncio.get_event_loop() + loop.run_until_complete(main()) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_data_feeds_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_data_feeds_async.py new file mode 100644 index 000000000000..5f4a13cf8686 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_data_feeds_async.py @@ -0,0 +1,236 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_data_feeds_async.py + +DESCRIPTION: + This sample demonstrates how to create, get, list, update, and delete datafeeds under your Metrics Advisor account. + +USAGE: + python sample_data_feeds_async.py + + Set the environment variables with your own values before running the sample: + 1) METRICS_ADVISOR_ENDPOINT - the endpoint of your Azure Metrics Advisor service + 2) METRICS_ADVISOR_SUBSCRIPTION_KEY - Metrics Advisor service subscription key + 3) METRICS_ADVISOR_API_KEY - Metrics Advisor service API key + 4) METRICS_ADVISOR_SQL_SERVER_CONNECTION_STRING - Used in this sample for demonstration, but you should + add your own credentials specific to the data source type you're using + 5) METRICS_ADVISOR_SQL_SERVER_QUERY - Used in this sample for demonstration, but you should + add your own credentials specific to the data source type you're using +""" + +import os +import asyncio +import datetime + + +async def sample_create_data_feed_async(): + # [START create_data_feed_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + from azure.ai.metricsadvisor.models import ( + SQLServerDataFeed, + DataFeedSchema, + Metric, + Dimension, + DataFeedOptions, + DataFeedRollupSettings, + DataFeedMissingDataPointFillSettings + ) + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + sql_server_connection_string = os.getenv("METRICS_ADVISOR_SQL_SERVER_CONNECTION_STRING") + query = os.getenv("METRICS_ADVISOR_SQL_SERVER_QUERY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + data_feed = await client.create_data_feed( + name="My data feed", + source=SQLServerDataFeed( + connection_string=sql_server_connection_string, + query=query, + ), + granularity="Daily", + schema=DataFeedSchema( + metrics=[ + Metric(name="cost", display_name="Cost"), + Metric(name="revenue", display_name="Revenue") + ], + dimensions=[ + Dimension(name="category", display_name="Category"), + Dimension(name="city", display_name="City") + ], + timestamp_column="Timestamp" + ), + ingestion_settings=datetime.datetime(2019, 10, 1), + options=DataFeedOptions( + data_feed_description="cost/revenue data feed", + rollup_settings=DataFeedRollupSettings( + rollup_type="AutoRollup", + rollup_method="Sum", + rollup_identification_value="__CUSTOM_SUM__" + ), + missing_data_point_fill_settings=DataFeedMissingDataPointFillSettings( + fill_type="SmartFilling" + ), + access_mode="Private" + ) + ) + + return data_feed + + # [END create_data_feed_async] + + +async def sample_get_data_feed_async(data_feed_id): + # [START get_data_feed_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + data_feed = await client.get_data_feed(data_feed_id) + + print("ID: {}".format(data_feed.id)) + print("Data feed name: {}".format(data_feed.name)) + print("Created time: {}".format(data_feed.created_time)) + print("Status: {}".format(data_feed.status)) + print("Source type: {}".format(data_feed.source.data_source_type)) + print("Granularity type: {}".format(data_feed.granularity.granularity_type)) + print("Data feed metrics: {}".format([metric.name for metric in data_feed.schema.metrics])) + print("Data feed dimensions: {}".format([dimension.name for dimension in data_feed.schema.dimensions])) + print("Data feed timestamp column: {}".format(data_feed.schema.timestamp_column)) + print("Ingestion data starting on: {}".format(data_feed.ingestion_settings.ingestion_begin_time)) + print("Data feed description: {}".format(data_feed.options.data_feed_description)) + print("Data feed rollup type: {}".format(data_feed.options.rollup_settings.rollup_type)) + print("Data feed rollup method: {}".format(data_feed.options.rollup_settings.rollup_method)) + print("Data feed fill setting: {}".format(data_feed.options.missing_data_point_fill_settings.fill_type)) + print("Data feed access mode: {}".format(data_feed.options.access_mode)) + # [END get_data_feed_async] + + +async def sample_list_data_feeds_async(): + # [START list_data_feeds_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + data_feeds = client.list_data_feeds() + + async for feed in data_feeds: + print("Data feed name: {}".format(feed.name)) + print("ID: {}".format(feed.id)) + print("Created time: {}".format(feed.created_time)) + print("Status: {}".format(feed.status)) + print("Source type: {}".format(feed.source.data_source_type)) + print("Granularity type: {}".format(feed.granularity.granularity_type)) + + print("\nFeed metrics:") + for metric in feed.schema.metrics: + print(metric.name) + + print("\nFeed dimensions:") + for dimension in feed.schema.dimensions: + print(dimension.name) + + # [END list_data_feeds_async] + + +async def sample_update_data_feed_async(data_feed): + # [START update_data_feed_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + # update data feed on the data feed itself or by using available keyword arguments + data_feed.name = "updated name" + data_feed.options.data_feed_description = "updated description for data feed" + + async with client: + updated_data_feed = await client.update_data_feed( + data_feed, + access_mode="Public", + fill_type="CustomValue", + custom_fill_value=1 + ) + + print("Updated name: {}".format(updated_data_feed.name)) + print("Updated description: {}".format(updated_data_feed.options.data_feed_description)) + print("Updated access mode: {}".format(updated_data_feed.options.access_mode)) + print("Updated fill setting, value: {}, {}".format( + updated_data_feed.options.missing_data_point_fill_settings.fill_type, + updated_data_feed.options.missing_data_point_fill_settings.custom_fill_value, + )) + # [END update_data_feed_async] + + +async def sample_delete_data_feed_async(data_feed_id): + # [START delete_data_feed_async] + from azure.core.exceptions import ResourceNotFoundError + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + await client.delete_data_feed(data_feed_id) + + try: + await client.get_data_feed(data_feed_id) + except ResourceNotFoundError: + print("Data feed successfully deleted.") + + # [END delete_data_feed_async] + + +async def main(): + print("---Creating data feed...") + data_feed = await sample_create_data_feed_async() + print("Data feed successfully created...") + print("\n---Get a data feed...") + await sample_get_data_feed_async(data_feed.id) + print("\n---List data feeds...") + await sample_list_data_feeds_async() + print("\n---Update a data feed...") + await sample_update_data_feed_async(data_feed) + print("\n---Delete a data feed...") + await sample_delete_data_feed_async(data_feed.id) + + +if __name__ == '__main__': + loop = asyncio.get_event_loop() + loop.run_until_complete(main()) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_feedback_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_feedback_async.py new file mode 100644 index 000000000000..a9991d75d9bf --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_feedback_async.py @@ -0,0 +1,120 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_feedback_async.py +DESCRIPTION: + This sample demonstrates feedback operations. +USAGE: + python sample_feedback_async.py + + Set the environment variables with your own values before running the sample: + 1) METRICS_ADVISOR_ENDPOINT - the endpoint of your Azure Metrics Advisor service + 2) METRICS_ADVISOR_SUBSCRIPTION_KEY - Metrics Advisor service subscription key + 3) METRICS_ADVISOR_API_KEY - Metrics Advisor service API key + 4) METRICS_ADVISOR_METRIC_ID - the ID of an metric from an existing data feed + 5) METRICS_ADVISOR_FEEDBACK_ID - the ID of an existing feedback +""" + +import os +import datetime +import asyncio + + +async def sample_add_feedback_async(): + # [START add_feedback_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorClient + from azure.ai.metricsadvisor.models import AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID") + + client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + anomaly_feedback = AnomalyFeedback(metric_id=metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + value="NotAnomaly") + await client.add_feedback(anomaly_feedback) + + change_point_feedback = ChangePointFeedback(metric_id=metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + value="NotChangePoint") + await client.add_feedback(change_point_feedback) + + comment_feedback = CommentFeedback(metric_id=metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + value="comment") + await client.add_feedback(comment_feedback) + + period_feedback = PeriodFeedback(metric_id=metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + period_type="AssignValue", + value=2) + await client.add_feedback(period_feedback) + # [END add_feedback_async] + + +async def sample_get_feedback_async(): + # [START get_feedback_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + feedback_id = os.getenv("METRICS_ADVISOR_FEEDBACK_ID") + + client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + result = await client.get_feedback(feedback_id=feedback_id) + print("Type: {}; Id: {}".format(result.feedback_type, result.id)) + # [END get_feedback_async] + + +async def sample_list_feedback_async(): + # [START list_feedback_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID") + + client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + results = client.list_feedbacks(metric_id=metric_id) + async for result in results: + print("Type: {}; Id: {}".format(result.feedback_type, result.id)) + # [END list_feedback_async] + +async def main(): + print("---Creating feedback...") + await sample_add_feedback_async() + print("Feedback successfully created...") + print("\n---Get a feedback...") + await sample_get_feedback_async() + print("\n---List feedbacks...") + await sample_list_feedback_async() + + +if __name__ == '__main__': + loop = asyncio.get_event_loop() + loop.run_until_complete(main()) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_hooks_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_hooks_async.py new file mode 100644 index 000000000000..7a45903ac2fb --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_hooks_async.py @@ -0,0 +1,166 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_hooks_async.py + +DESCRIPTION: + This sample demonstrates how to create, get, list, update, and delete hooks + under your Metrics Advisor account. EmailHook is used as an example in this sample. + +USAGE: + python sample_hooks_async.py + + Set the environment variables with your own values before running the sample: + 1) METRICS_ADVISOR_ENDPOINT - the endpoint of your Azure Metrics Advisor service + 2) METRICS_ADVISOR_SUBSCRIPTION_KEY - Metrics Advisor service subscription key + 3) METRICS_ADVISOR_API_KEY - Metrics Advisor service API key +""" + +import os +import asyncio + + +async def sample_create_hook_async(): + # [START create_hook_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + from azure.ai.metricsadvisor.models import EmailHook + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + hook = await client.create_hook( + name="email hook", + hook=EmailHook( + description="my email hook", + emails_to_alert=["alertme@alertme.com"], + external_link="https://adwiki.azurewebsites.net/articles/howto/alerts/create-hooks.html" + ) + ) + + return hook + # [END create_hook_async] + + +async def sample_get_hook_async(hook_id): + # [START get_hook_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + async with client: + hook = await client.get_hook(hook_id) + + print("Hook name: {}".format(hook.name)) + print("Description: {}".format(hook.description)) + print("Emails to alert: {}".format(hook.emails_to_alert)) + print("External link: {}".format(hook.external_link)) + print("Admins: {}".format(hook.admins)) + + # [END get_hook_async] + + +async def sample_list_hooks_async(): + # [START list_hooks_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + hooks = client.list_hooks() + async for hook in hooks: + print("Hook type: {}".format(hook.hook_type)) + print("Hook name: {}".format(hook.name)) + print("Description: {}\n".format(hook.description)) + + # [END list_hooks_async] + + +async def sample_update_hook_async(hook): + # [START update_hook_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + hook.name = "updated hook name" + hook.description = "updated hook description" + + async with client: + updated = await client.update_hook( + hook, + emails_to_alert=["newemail@alertme.com"] + ) + print("Updated name: {}".format(updated.name)) + print("Updated description: {}".format(updated.description)) + print("Updated emails: {}".format(updated.emails_to_alert)) + # [END update_hook_async] + + +async def sample_delete_hook_async(hook_id): + # [START delete_hook_async] + from azure.core.exceptions import ResourceNotFoundError + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + await client.delete_hook(hook_id) + + try: + await client.get_hook(hook_id) + except ResourceNotFoundError: + print("Hook successfully deleted.") + # [END delete_hook_async] + + +async def main(): + print("---Creating hook...") + hook = await sample_create_hook_async() + print("Hook successfully created...") + print("\n---Get a hook...") + await sample_get_hook_async(hook.id) + print("\n---List hooks...") + await sample_list_hooks_async() + print("\n---Update a hook...") + await sample_update_hook_async(hook) + print("\n---Delete a hook...") + await sample_delete_hook_async(hook.id) + + +if __name__ == '__main__': + loop = asyncio.get_event_loop() + loop.run_until_complete(main()) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_ingestion_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_ingestion_async.py new file mode 100644 index 000000000000..206054daf878 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/async_samples/sample_ingestion_async.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_ingestion_async.py + +DESCRIPTION: + This sample demonstrates how to monitor data feed ingestion by listing the ingestion statuses, + refreshing ingestion for a time period, and getting the ingestion progress. + +USAGE: + python sample_ingestion_async.py + + Set the environment variables with your own values before running the sample: + 1) METRICS_ADVISOR_ENDPOINT - the endpoint of your Azure Metrics Advisor service + 2) METRICS_ADVISOR_SUBSCRIPTION_KEY - Metrics Advisor service subscription key + 3) METRICS_ADVISOR_API_KEY - Metrics Advisor service API key + 4) METRICS_ADVISOR_DATA_FEED_ID - The ID to an existing data feed under your account +""" + +import os +import asyncio + + +async def sample_list_data_feed_ingestion_status_async(): + # [START list_data_feed_ingestion_status_async] + import datetime + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + data_feed_id = os.getenv("METRICS_ADVISOR_DATA_FEED_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + ingestion_status = client.list_data_feed_ingestion_status( + data_feed_id, + datetime.datetime(2020, 9, 20), + datetime.datetime(2020, 9, 25) + ) + async for status in ingestion_status: + print("Timestamp: {}".format(status.timestamp)) + print("Status: {}".format(status.status)) + print("Message: {}\n".format(status.message)) + + # [END list_data_feed_ingestion_status_async] + + +async def sample_refresh_data_feed_ingestion_async(): + # [START refresh_data_feed_ingestion_async] + import datetime + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + data_feed_id = os.getenv("METRICS_ADVISOR_DATA_FEED_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + await client.refresh_data_feed_ingestion( + data_feed_id, + datetime.datetime(2020, 9, 20), + datetime.datetime(2020, 9, 25) + ) + + # [END refresh_data_feed_ingestion_async] + + +async def sample_get_data_feed_ingestion_progress_async(): + # [START get_data_feed_ingestion_progress_async] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential + from azure.ai.metricsadvisor.aio import MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + data_feed_id = os.getenv("METRICS_ADVISOR_DATA_FEED_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async with client: + progress = await client.get_data_feed_ingestion_progress(data_feed_id) + + print("Lastest active timestamp: {}".format(progress.latest_active_timestamp)) + print("Latest successful timestamp: {}".format(progress.latest_success_timestamp)) + + # [END get_data_feed_ingestion_progress_async] + + +async def main(): + print("---Listing data feed ingestion status...") + await sample_list_data_feed_ingestion_status_async() + print("---Refreshing data feed ingestion...") + await sample_refresh_data_feed_ingestion_async() + print("---Getting data feed ingestion progress...") + await sample_get_data_feed_ingestion_progress_async() + + +if __name__ == '__main__': + loop = asyncio.get_event_loop() + loop.run_until_complete(main()) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_anomaly_alert_configuration.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_anomaly_alert_configuration.py new file mode 100644 index 000000000000..b5e862229f35 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_anomaly_alert_configuration.py @@ -0,0 +1,309 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_anomaly_alert_configuration.py + +DESCRIPTION: + This sample demonstrates how to create, get, list, query, update, and delete anomaly alert configurations + under your Metrics Advisor account. + +USAGE: + python sample_anomaly_alert_configuration.py + + Set the environment variables with your own values before running the sample: + 1) METRICS_ADVISOR_ENDPOINT - the endpoint of your Azure Metrics Advisor service + 2) METRICS_ADVISOR_SUBSCRIPTION_KEY - Metrics Advisor service subscription key + 3) METRICS_ADVISOR_API_KEY - Metrics Advisor service API key + 4) METRICS_ADVISOR_DETECTION_CONFIGURATION_ID - the ID of an existing detection configuration + 5) METRICS_ADVISOR_HOOK_ID - the ID of hook you would like to be associated with the alert configuration +""" + +import os + + +def sample_create_alert_config(): + # [START create_anomaly_alert_config] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + from azure.ai.metricsadvisor.models import ( + MetricAlertConfiguration, + MetricAnomalyAlertScope, + TopNGroupScope, + MetricAnomalyAlertConditions, + SeverityCondition, + MetricBoundaryCondition, + MetricAnomalyAlertSnoozeCondition + ) + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + anomaly_detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID") + hook_id = os.getenv("METRICS_ADVISOR_HOOK_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + alert_config = client.create_anomaly_alert_configuration( + name="my alert config", + description="alert config description", + cross_metrics_operator="AND", + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=anomaly_detection_configuration_id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ), + MetricAlertConfiguration( + detection_configuration_id=anomaly_detection_configuration_id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=10, + period=5, + min_top_count=5 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Up", + upper=50 + ) + ), + alert_snooze_condition=MetricAnomalyAlertSnoozeCondition( + auto_snooze=2, + snooze_scope="Metric", + only_for_successive=True + ) + ), + ], + hook_ids=[hook_id] + ) + + return alert_config + # [END create_anomaly_alert_config] + + +def sample_get_alert_config(alert_config_id): + # [START get_anomaly_alert_config] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + config = client.get_anomaly_alert_configuration(alert_config_id) + + print("Alert config ID: {}".format(config.id)) + print("Alert config name: {}".format(config.name)) + print("Description: {}".format(config.description)) + print("Ids of hooks associated with alert: {}".format(config.hook_ids)) + print("Use {} operator for multiple alert conditions\n".format(config.cross_metrics_operator)) + + print("Alert uses detection configuration ID: {}".format( + config.metric_alert_configurations[0].detection_configuration_id + )) + print("Alert scope type: {}".format(config.metric_alert_configurations[0].alert_scope.scope_type)) + print("Alert severity condition: min- {}, max- {}".format( + config.metric_alert_configurations[0].alert_conditions.severity_condition.min_alert_severity, + config.metric_alert_configurations[0].alert_conditions.severity_condition.max_alert_severity, + )) + print("\nAlert uses detection configuration ID: {}".format( + config.metric_alert_configurations[1].detection_configuration_id + )) + print("Alert scope type: {}".format(config.metric_alert_configurations[1].alert_scope.scope_type)) + print("Top N: {}".format(config.metric_alert_configurations[1].alert_scope.top_n_group_in_scope.top)) + print("Point count used to look back: {}".format( + config.metric_alert_configurations[1].alert_scope.top_n_group_in_scope.period + )) + print("Min top count: {}".format( + config.metric_alert_configurations[1].alert_scope.top_n_group_in_scope.min_top_count + )) + print("Alert metric boundary condition direction: {}, upper bound: {}".format( + config.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.direction, + config.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.upper, + )) + print("Alert snooze condition, snooze point count: {}".format( + config.metric_alert_configurations[1].alert_snooze_condition.auto_snooze, + )) + print("Alert snooze scope: {}".format( + config.metric_alert_configurations[1].alert_snooze_condition.snooze_scope, + )) + print("Snooze only for successive anomalies?: {}".format( + config.metric_alert_configurations[1].alert_snooze_condition.only_for_successive, + )) + # [END get_anomaly_alert_config] + + +def sample_list_alert_configs(): + # [START list_anomaly_alert_configs] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + anomaly_detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + configs = client.list_anomaly_alert_configurations(anomaly_detection_configuration_id) + for config in configs: + print("Alert config name: {}".format(config.name)) + print("Alert description: {}".format(config.description)) + print("Ids of hooks associated with alert: {}\n".format(config.hook_ids)) + + # [END list_anomaly_alert_configs] + + +def sample_list_alerts_for_alert_config(alert_config_id): + # [START list_alerts_for_alert_config] + import datetime + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + results = client.list_alerts_for_alert_configuration( + alert_configuration_id=alert_config_id, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + time_mode="AnomalyTime", + ) + for result in results: + print("Alert id: {}".format(result.id)) + print("Create on: {}".format(result.created_on)) + return results + + # [END list_alerts_for_alert_config] + + +def sample_list_anomalies_for_alert(alert_config_id, alert_id): + # [START list_anomalies_for_alert] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + results = client.list_anomalies_for_alert( + alert_configuration_id=alert_config_id, + alert_id=alert_id, + ) + for result in results: + print("Create on: {}".format(result.created_on)) + print("Severity: {}".format(result.severity)) + print("Status: {}".format(result.status)) + + # [END list_anomalies_for_alert] + + +def sample_update_alert_config(alert_config): + # [START update_anomaly_alert_config] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + from azure.ai.metricsadvisor.models import ( + MetricAlertConfiguration, + MetricAnomalyAlertScope, + MetricAnomalyAlertConditions, + MetricBoundaryCondition + ) + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + anomaly_detection_configuration_id = os.getenv("METRICS_ADVISOR_DETECTION_CONFIGURATION_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + alert_config.name = "updated config name" + additional_alert = MetricAlertConfiguration( + detection_configuration_id=anomaly_detection_configuration_id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Down", + lower=5 + ) + ) + ) + alert_config.metric_alert_configurations.append(additional_alert) + + updated = client.update_anomaly_alert_configuration( + alert_config, + cross_metrics_operator="OR", + description="updated alert config" + ) + + print("Updated alert name: {}".format(updated.name)) + print("Updated alert description: {}".format(updated.description)) + print("Updated cross metrics operator: {}".format(updated.cross_metrics_operator)) + print("Updated alert condition configuration scope type: {}".format( + updated.metric_alert_configurations[2].alert_scope.scope_type + )) + + # [END update_anomaly_alert_config] + + +def sample_delete_alert_config(alert_config_id): + # [START delete_anomaly_alert_config] + from azure.core.exceptions import ResourceNotFoundError + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + client.delete_anomaly_alert_configuration(alert_config_id) + + try: + client.get_anomaly_alert_configuration(alert_config_id) + except ResourceNotFoundError: + print("Alert configuration successfully deleted.") + # [END delete_anomaly_alert_config] + + +if __name__ == '__main__': + print("---Creating anomaly alert configuration...") + alert_config = sample_create_alert_config() + print("Anomaly alert configuration successfully created...") + print("\n---Get an anomaly alert configuration...") + sample_get_alert_config(alert_config.id) + print("\n---List anomaly alert configurations...") + sample_list_alert_configs() + print("\n---Query anomaly detection results...") + alerts = sample_list_alerts_for_alert_config(alert_config.id) + if len(alerts) > 0: + print("\n---Query anomalies using alert id...") + alert_id = alerts[0].id + sample_list_anomalies_for_alert(alert_config.id, alert_id) + print("\n---Update an anomaly alert configuration...") + sample_update_alert_config(alert_config) + print("\n---Delete an anomaly alert configuration...") + sample_delete_alert_config(alert_config.id) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_anomaly_detection_configuration.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_anomaly_detection_configuration.py new file mode 100644 index 000000000000..1844693da335 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_anomaly_detection_configuration.py @@ -0,0 +1,252 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_anomaly_detection_configuration.py + +DESCRIPTION: + This sample demonstrates how to create, get, list, update, and delete anomaly detection configurations + under your Metrics Advisor account. + +USAGE: + python sample_anomaly_detection_configuration.py + + Set the environment variables with your own values before running the sample: + 1) METRICS_ADVISOR_ENDPOINT - the endpoint of your Azure Metrics Advisor service + 2) METRICS_ADVISOR_SUBSCRIPTION_KEY - Metrics Advisor service subscription key + 3) METRICS_ADVISOR_API_KEY - Metrics Advisor service API key + 4) METRICS_ADVISOR_METRIC_ID - the ID of an metric from an existing data feed +""" + +import os + + +def sample_create_detection_config(): + # [START create_anomaly_detection_config] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + from azure.ai.metricsadvisor.models import ( + ChangeThresholdCondition, + HardThresholdCondition, + SmartDetectionCondition, + SuppressCondition, + MetricDetectionCondition, + ) + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + change_threshold_condition = ChangeThresholdCondition( + anomaly_detector_direction="Both", + change_percentage=20, + shift_point=10, + within_range=True, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + hard_threshold_condition = HardThresholdCondition( + anomaly_detector_direction="Up", + upper_bound=100, + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + smart_detection_condition = SmartDetectionCondition( + anomaly_detector_direction="Up", + sensitivity=10, + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + + detection_config = client.create_metric_anomaly_detection_configuration( + name="my_detection_config", + metric_id=metric_id, + description="anomaly detection config for metric", + whole_series_detection_condition=MetricDetectionCondition( + cross_conditions_operator="OR", + change_threshold_condition=change_threshold_condition, + hard_threshold_condition=hard_threshold_condition, + smart_detection_condition=smart_detection_condition + ) + ) + + return detection_config + # [END create_anomaly_detection_config] + + +def sample_get_detection_config(detection_config_id): + # [START get_anomaly_detection_config] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + config = client.get_metric_anomaly_detection_configuration(detection_config_id) + + print("Detection config name: {}".format(config.name)) + print("Description: {}".format(config.description)) + print("Metric ID: {}".format(config.metric_id)) + + print("\nDetection conditions specified for configuration...") + print("\nWhole Series Detection Conditions:\n") + conditions = config.whole_series_detection_condition + + print("Use {} operator for multiple detection conditions".format(conditions.cross_conditions_operator)) + + print("Smart Detection Condition:") + print("- Sensitivity: {}".format(conditions.smart_detection_condition.sensitivity)) + print("- Detection direction: {}".format(conditions.smart_detection_condition.anomaly_detector_direction)) + print("- Suppress conditions: minimum number: {}; minimum ratio: {}".format( + conditions.smart_detection_condition.suppress_condition.min_number, + conditions.smart_detection_condition.suppress_condition.min_ratio + )) + + print("Hard Threshold Condition:") + print("- Lower bound: {}".format(conditions.hard_threshold_condition.lower_bound)) + print("- Upper bound: {}".format(conditions.hard_threshold_condition.upper_bound)) + print("- Detection direction: {}".format(conditions.smart_detection_condition.anomaly_detector_direction)) + print("- Suppress conditions: minimum number: {}; minimum ratio: {}".format( + conditions.smart_detection_condition.suppress_condition.min_number, + conditions.smart_detection_condition.suppress_condition.min_ratio + )) + + print("Change Threshold Condition:") + print("- Change percentage: {}".format(conditions.change_threshold_condition.change_percentage)) + print("- Shift point: {}".format(conditions.change_threshold_condition.shift_point)) + print("- Detect anomaly if within range: {}".format(conditions.change_threshold_condition.within_range)) + print("- Detection direction: {}".format(conditions.smart_detection_condition.anomaly_detector_direction)) + print("- Suppress conditions: minimum number: {}; minimum ratio: {}".format( + conditions.smart_detection_condition.suppress_condition.min_number, + conditions.smart_detection_condition.suppress_condition.min_ratio + )) + + # [END get_anomaly_detection_config] + + +def sample_list_detection_configs(): + # [START list_anomaly_detection_configs] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + configs = client.list_metric_anomaly_detection_configurations(metric_id=metric_id) + for config in configs: + print("Detection config name: {}".format(config.name)) + print("Description: {}".format(config.description)) + print("Metric ID: {}\n".format(config.metric_id)) + + # [END list_anomaly_detection_configs] + + +def sample_update_detection_config(detection_config): + # [START update_anomaly_detection_config] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + from azure.ai.metricsadvisor.models import ( + MetricSeriesGroupDetectionCondition, + MetricSingleSeriesDetectionCondition, + SmartDetectionCondition, + SuppressCondition + ) + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + detection_config.name = "updated config name" + detection_config.description = "updated with more detection conditions" + smart_detection_condition = SmartDetectionCondition( + anomaly_detector_direction="Up", + sensitivity=10, + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + + updated = client.update_metric_anomaly_detection_configuration( + detection_config, + series_group_detection_conditions=[ + MetricSeriesGroupDetectionCondition( + series_group_key={"city": "Seoul"}, + smart_detection_condition=smart_detection_condition + ) + ], + series_detection_conditions=[ + MetricSingleSeriesDetectionCondition( + series_key={"city": "Osaka", "category": "Cell Phones"}, + smart_detection_condition=smart_detection_condition + ) + ] + ) + print("Updated detection name: {}".format(updated.name)) + print("Updated detection description: {}".format(updated.description)) + print("Updated detection condition for series group: {}".format( + updated.series_group_detection_conditions[0].series_group_key + )) + print("Updated detection condition for series: {}".format( + updated.series_detection_conditions[0].series_key + )) + + # [END update_anomaly_detection_config] + + +def sample_delete_detection_config(detection_config_id): + # [START delete_anomaly_detection_config] + from azure.core.exceptions import ResourceNotFoundError + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + client.delete_metric_anomaly_detection_configuration(detection_config_id) + + try: + client.get_metric_anomaly_detection_configuration(detection_config_id) + except ResourceNotFoundError: + print("Detection configuration successfully deleted.") + # [END delete_anomaly_detection_config] + + +if __name__ == '__main__': + print("---Creating anomaly detection configuration...") + detection_config = sample_create_detection_config() + print("Anomaly detection configuration successfully created...") + print("\n---Get an anomaly detection configuration...") + sample_get_detection_config(detection_config.id) + print("\n---List anomaly detection configurations...") + sample_list_detection_configs() + print("\n---Update an anomaly detection configuration...") + sample_update_detection_config(detection_config) + print("\n---Delete an anomaly detection configuration...") + sample_delete_detection_config(detection_config.id) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_authentication.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_authentication.py new file mode 100644 index 000000000000..c67a8cc4527a --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_authentication.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_authentication.py + +DESCRIPTION: + This sample demonstrates how to authenticate with the Azure Metrics Advisor + service with Subscription key and API key. + +USAGE: + python sample_authentication.py + + Set the environment variables with your own values before running the sample: + 1) METRICS_ADVISOR_ENDPOINT - the endpoint of your Azure Metrics Advisor service + 2) METRICS_ADVISOR_SUBSCRIPTION_KEY - Metrics Advisor service subscription key + 3) METRICS_ADVISOR_API_KEY - Metrics Advisor service API key +""" + +import os + + +def authentication_client_with_metrics_advisor_credential(): + # [START authentication_client_with_metrics_advisor_credential] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + # [END authentication_client_with_metrics_advisor_credential] + + +def authentication_administration_client_with_metrics_advisor_credential(): + # [START administration_client_with_metrics_advisor_credential] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + # [END administration_client_with_metrics_advisor_credential] + + +if __name__ == '__main__': + authentication_client_with_metrics_advisor_credential() + authentication_administration_client_with_metrics_advisor_credential() diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_data_feeds.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_data_feeds.py new file mode 100644 index 000000000000..d0d31af11729 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_data_feeds.py @@ -0,0 +1,220 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_data_feeds.py + +DESCRIPTION: + This sample demonstrates how to create, get, list, update, and delete datafeeds under your Metrics Advisor account. + +USAGE: + python sample_data_feeds.py + + Set the environment variables with your own values before running the sample: + 1) METRICS_ADVISOR_ENDPOINT - the endpoint of your Azure Metrics Advisor service + 2) METRICS_ADVISOR_SUBSCRIPTION_KEY - Metrics Advisor service subscription key + 3) METRICS_ADVISOR_API_KEY - Metrics Advisor service API key + 4) METRICS_ADVISOR_SQL_SERVER_CONNECTION_STRING - Used in this sample for demonstration, but you should + add your own credentials specific to the data source type you're using + 5) METRICS_ADVISOR_SQL_SERVER_QUERY - Used in this sample for demonstration, but you should + add your own credentials specific to the data source type you're using +""" + +import os +import datetime + + +def sample_create_data_feed(): + # [START create_data_feed] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + from azure.ai.metricsadvisor.models import ( + SQLServerDataFeed, + DataFeedSchema, + Metric, + Dimension, + DataFeedOptions, + DataFeedRollupSettings, + DataFeedMissingDataPointFillSettings + ) + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + sql_server_connection_string = os.getenv("METRICS_ADVISOR_SQL_SERVER_CONNECTION_STRING") + query = os.getenv("METRICS_ADVISOR_SQL_SERVER_QUERY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + data_feed = client.create_data_feed( + name="My data feed", + source=SQLServerDataFeed( + connection_string=sql_server_connection_string, + query=query, + ), + granularity="Daily", + schema=DataFeedSchema( + metrics=[ + Metric(name="cost", display_name="Cost"), + Metric(name="revenue", display_name="Revenue") + ], + dimensions=[ + Dimension(name="category", display_name="Category"), + Dimension(name="city", display_name="City") + ], + timestamp_column="Timestamp" + ), + ingestion_settings=datetime.datetime(2019, 10, 1), + options=DataFeedOptions( + data_feed_description="cost/revenue data feed", + rollup_settings=DataFeedRollupSettings( + rollup_type="AutoRollup", + rollup_method="Sum", + rollup_identification_value="__CUSTOM_SUM__" + ), + missing_data_point_fill_settings=DataFeedMissingDataPointFillSettings( + fill_type="SmartFilling" + ), + access_mode="Private" + ) + ) + + return data_feed + + # [END create_data_feed] + + +def sample_get_data_feed(data_feed_id): + # [START get_data_feed] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + data_feed = client.get_data_feed(data_feed_id) + + print("ID: {}".format(data_feed.id)) + print("Data feed name: {}".format(data_feed.name)) + print("Created time: {}".format(data_feed.created_time)) + print("Status: {}".format(data_feed.status)) + print("Source type: {}".format(data_feed.source.data_source_type)) + print("Granularity type: {}".format(data_feed.granularity.granularity_type)) + print("Data feed metrics: {}".format([metric.name for metric in data_feed.schema.metrics])) + print("Data feed dimensions: {}".format([dimension.name for dimension in data_feed.schema.dimensions])) + print("Data feed timestamp column: {}".format(data_feed.schema.timestamp_column)) + print("Ingestion data starting on: {}".format(data_feed.ingestion_settings.ingestion_begin_time)) + print("Data feed description: {}".format(data_feed.options.data_feed_description)) + print("Data feed rollup type: {}".format(data_feed.options.rollup_settings.rollup_type)) + print("Data feed rollup method: {}".format(data_feed.options.rollup_settings.rollup_method)) + print("Data feed fill setting: {}".format(data_feed.options.missing_data_point_fill_settings.fill_type)) + print("Data feed access mode: {}".format(data_feed.options.access_mode)) + # [END get_data_feed] + + +def sample_list_data_feeds(): + # [START list_data_feeds] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + data_feeds = client.list_data_feeds() + + for feed in data_feeds: + print("Data feed name: {}".format(feed.name)) + print("ID: {}".format(feed.id)) + print("Created time: {}".format(feed.created_time)) + print("Status: {}".format(feed.status)) + print("Source type: {}".format(feed.source.data_source_type)) + print("Granularity type: {}".format(feed.granularity.granularity_type)) + + print("\nFeed metrics:") + for metric in feed.schema.metrics: + print(metric.name) + + print("\nFeed dimensions:") + for dimension in feed.schema.dimensions: + print(dimension.name) + + # [END list_data_feeds] + + +def sample_update_data_feed(data_feed): + # [START update_data_feed] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + # update data feed on the data feed itself or by using available keyword arguments + data_feed.name = "updated name" + data_feed.options.data_feed_description = "updated description for data feed" + + updated_data_feed = client.update_data_feed( + data_feed, + access_mode="Public", + fill_type="CustomValue", + custom_fill_value=1 + ) + + print("Updated name: {}".format(updated_data_feed.name)) + print("Updated description: {}".format(updated_data_feed.options.data_feed_description)) + print("Updated access mode: {}".format(updated_data_feed.options.access_mode)) + print("Updated fill setting, value: {}, {}".format( + updated_data_feed.options.missing_data_point_fill_settings.fill_type, + updated_data_feed.options.missing_data_point_fill_settings.custom_fill_value, + )) + # [END update_data_feed] + + +def sample_delete_data_feed(data_feed_id): + # [START delete_data_feed] + from azure.core.exceptions import ResourceNotFoundError + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + client.delete_data_feed(data_feed_id) + + try: + client.get_data_feed(data_feed_id) + except ResourceNotFoundError: + print("Data feed successfully deleted.") + + # [END delete_data_feed] + + +if __name__ == '__main__': + print("---Creating data feed...") + data_feed = sample_create_data_feed() + print("Data feed successfully created...") + print("\n---Get a data feed...") + sample_get_data_feed(data_feed.id) + print("\n---List data feeds...") + sample_list_data_feeds() + print("\n---Update a data feed...") + sample_update_data_feed(data_feed) + print("\n---Delete a data feed...") + sample_delete_data_feed(data_feed.id) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_feedback.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_feedback.py new file mode 100644 index 000000000000..78c7fe3eab67 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_feedback.py @@ -0,0 +1,114 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_feedback.py +DESCRIPTION: + This sample demonstrates feedback operations. +USAGE: + python sample_feedback.py + + Set the environment variables with your own values before running the sample: + 1) METRICS_ADVISOR_ENDPOINT - the endpoint of your Azure Metrics Advisor service + 2) METRICS_ADVISOR_SUBSCRIPTION_KEY - Metrics Advisor service subscription key + 3) METRICS_ADVISOR_API_KEY - Metrics Advisor service API key + 4) METRICS_ADVISOR_METRIC_ID - the ID of an metric from an existing data feed + 5) METRICS_ADVISOR_FEEDBACK_ID - the ID of an existing feedback +""" + +import os +import datetime + + +def sample_add_feedback(): + # [START add_feedback] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorClient + from azure.ai.metricsadvisor.models import AnomalyFeedback, ChangePointFeedback, CommentFeedback, PeriodFeedback + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID") + + client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + anomaly_feedback = AnomalyFeedback(metric_id=metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + value="NotAnomaly") + client.add_feedback(anomaly_feedback) + + change_point_feedback = ChangePointFeedback(metric_id=metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + value="NotChangePoint") + client.add_feedback(change_point_feedback) + + comment_feedback = CommentFeedback(metric_id=metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + value="comment") + client.add_feedback(comment_feedback) + + period_feedback = PeriodFeedback(metric_id=metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + period_type="AssignValue", + value=2) + client.add_feedback(period_feedback) + # [END add_feedback] + + +def sample_get_feedback(): + # [START get_feedback] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + feedback_id = os.getenv("METRICS_ADVISOR_FEEDBACK_ID") + + client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + result = client.get_feedback(feedback_id=feedback_id) + print("Type: {}; Id: {}".format(result.feedback_type, result.id)) + # [END get_feedback] + + +def sample_list_feedback(): + # [START list_feedback] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + metric_id = os.getenv("METRICS_ADVISOR_METRIC_ID") + + client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + results = client.list_feedbacks(metric_id=metric_id) + for result in results: + print("Type: {}; Id: {}".format(result.feedback_type, result.id)) + # [END list_feedback] + + +if __name__ == '__main__': + print("---Creating feedback...") + sample_add_feedback() + print("Feedback successfully created...") + print("\n---Get a feedback...") + sample_get_feedback() + print("\n---List feedbacks...") + sample_list_feedback() diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_hooks.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_hooks.py new file mode 100644 index 000000000000..52a7539b2d5e --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_hooks.py @@ -0,0 +1,151 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_hooks.py + +DESCRIPTION: + This sample demonstrates how to create, get, list, update, and delete hooks + under your Metrics Advisor account. EmailHook is used as an example in this sample. + +USAGE: + python sample_hooks.py + + Set the environment variables with your own values before running the sample: + 1) METRICS_ADVISOR_ENDPOINT - the endpoint of your Azure Metrics Advisor service + 2) METRICS_ADVISOR_SUBSCRIPTION_KEY - Metrics Advisor service subscription key + 3) METRICS_ADVISOR_API_KEY - Metrics Advisor service API key +""" + +import os + + +def sample_create_hook(): + # [START create_hook] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + from azure.ai.metricsadvisor.models import EmailHook + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + hook = client.create_hook( + name="email hook", + hook=EmailHook( + description="my email hook", + emails_to_alert=["alertme@alertme.com"], + external_link="https://adwiki.azurewebsites.net/articles/howto/alerts/create-hooks.html" + ) + ) + + return hook + # [END create_hook] + + +def sample_get_hook(hook_id): + # [START get_hook] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + hook = client.get_hook(hook_id) + + print("Hook name: {}".format(hook.name)) + print("Description: {}".format(hook.description)) + print("Emails to alert: {}".format(hook.emails_to_alert)) + print("External link: {}".format(hook.external_link)) + print("Admins: {}".format(hook.admins)) + + # [END get_hook] + + +def sample_list_hooks(): + # [START list_hooks] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + hooks = client.list_hooks() + for hook in hooks: + print("Hook type: {}".format(hook.hook_type)) + print("Hook name: {}".format(hook.name)) + print("Description: {}\n".format(hook.description)) + + # [END list_hooks] + + +def sample_update_hook(hook): + # [START update_hook] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + hook.name = "updated hook name" + hook.description = "updated hook description" + + updated = client.update_hook( + hook, + emails_to_alert=["newemail@alertme.com"] + ) + print("Updated name: {}".format(updated.name)) + print("Updated description: {}".format(updated.description)) + print("Updated emails: {}".format(updated.emails_to_alert)) + # [END update_hook] + + +def sample_delete_hook(hook_id): + # [START delete_hook] + from azure.core.exceptions import ResourceNotFoundError + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + client.delete_hook(hook_id) + + try: + client.get_hook(hook_id) + except ResourceNotFoundError: + print("Hook successfully deleted.") + # [END delete_hook] + + +if __name__ == '__main__': + print("---Creating hook...") + hook = sample_create_hook() + print("Hook successfully created...") + print("\n---Get a hook...") + sample_get_hook(hook.id) + print("\n---List hooks...") + sample_list_hooks() + print("\n---Update a hook...") + sample_update_hook(hook) + print("\n---Delete a hook...") + sample_delete_hook(hook.id) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_ingestion.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_ingestion.py new file mode 100644 index 000000000000..e85caac53162 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/samples/sample_ingestion.py @@ -0,0 +1,103 @@ +# coding: utf-8 + +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +""" +FILE: sample_ingestion.py + +DESCRIPTION: + This sample demonstrates how to monitor data feed ingestion by listing the ingestion statuses, + refreshing ingestion for a time period, and getting the ingestion progress. + +USAGE: + python sample_ingestion.py + + Set the environment variables with your own values before running the sample: + 1) METRICS_ADVISOR_ENDPOINT - the endpoint of your Azure Metrics Advisor service + 2) METRICS_ADVISOR_SUBSCRIPTION_KEY - Metrics Advisor service subscription key + 3) METRICS_ADVISOR_API_KEY - Metrics Advisor service API key + 4) METRICS_ADVISOR_DATA_FEED_ID - The ID to an existing data feed under your account +""" + +import os + + +def sample_list_data_feed_ingestion_status(): + # [START list_data_feed_ingestion_status] + import datetime + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + data_feed_id = os.getenv("METRICS_ADVISOR_DATA_FEED_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + ingestion_status = client.list_data_feed_ingestion_status( + data_feed_id, + datetime.datetime(2020, 9, 20), + datetime.datetime(2020, 9, 25) + ) + for status in ingestion_status: + print("Timestamp: {}".format(status.timestamp)) + print("Status: {}".format(status.status)) + print("Message: {}\n".format(status.message)) + + # [END list_data_feed_ingestion_status] + + +def sample_refresh_data_feed_ingestion(): + # [START refresh_data_feed_ingestion] + import datetime + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + data_feed_id = os.getenv("METRICS_ADVISOR_DATA_FEED_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + client.refresh_data_feed_ingestion( + data_feed_id, + datetime.datetime(2020, 9, 20), + datetime.datetime(2020, 9, 25) + ) + + # [END refresh_data_feed_ingestion] + + +def sample_get_data_feed_ingestion_progress(): + # [START get_data_feed_ingestion_progress] + from azure.ai.metricsadvisor import MetricsAdvisorKeyCredential, MetricsAdvisorAdministrationClient + + service_endpoint = os.getenv("METRICS_ADVISOR_ENDPOINT") + subscription_key = os.getenv("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = os.getenv("METRICS_ADVISOR_API_KEY") + data_feed_id = os.getenv("METRICS_ADVISOR_DATA_FEED_ID") + + client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + progress = client.get_data_feed_ingestion_progress(data_feed_id) + + print("Lastest active timestamp: {}".format(progress.latest_active_timestamp)) + print("Latest successful timestamp: {}".format(progress.latest_success_timestamp)) + + # [END get_data_feed_ingestion_progress] + + +if __name__ == '__main__': + print("---Listing data feed ingestion status...") + sample_list_data_feed_ingestion_status() + print("---Refreshing data feed ingestion...") + sample_refresh_data_feed_ingestion() + print("---Getting data feed ingestion progress...") + sample_get_data_feed_ingestion_progress() diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/sdk_packaging.toml b/sdk/metricsadvisor/azure-ai-metricsadvisor/sdk_packaging.toml new file mode 100644 index 000000000000..db7904a3bde6 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/sdk_packaging.toml @@ -0,0 +1,9 @@ +[packaging] +package_name = "azure-ai-metricsadvisor" +package_nspkg = "azure-ai-nspkg" +package_pprint_name = "Azure Metrics Advisor" +package_doc_id = "" +is_stable = false +is_arm = false +need_msrestazure = false +auto_update = false diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/setup.cfg b/sdk/metricsadvisor/azure-ai-metricsadvisor/setup.cfg new file mode 100644 index 000000000000..3c6e79cf31da --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/setup.cfg @@ -0,0 +1,2 @@ +[bdist_wheel] +universal=1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/setup.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/setup.py new file mode 100644 index 000000000000..9d212a415de2 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/setup.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python + +#------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +#-------------------------------------------------------------------------- + +import re +import os.path +from io import open +from setuptools import find_packages, setup + +# Change the PACKAGE_NAME only to change folder and different name +PACKAGE_NAME = "azure-ai-metricsadvisor" +PACKAGE_PPRINT_NAME = "Azure Metrics Advisor" + +# a-b-c => a/b/c +package_folder_path = PACKAGE_NAME.replace('-', '/') +# a-b-c => a.b.c +namespace_name = PACKAGE_NAME.replace('-', '.') + +# azure v0.x is not compatible with this package +# azure v0.x used to have a __version__ attribute (newer versions don't) +try: + import azure + try: + ver = azure.__version__ + raise Exception( + 'This package is incompatible with azure=={}. '.format(ver) + + 'Uninstall it with "pip uninstall azure".' + ) + except AttributeError: + pass +except ImportError: + pass + +# Version extraction inspired from 'requests' +with open(os.path.join(package_folder_path, '_version.py'), 'r') as fd: + version = re.search(r'^VERSION\s*=\s*[\'"]([^\'"]*)[\'"]', + fd.read(), re.MULTILINE).group(1) + +if not version: + raise RuntimeError('Cannot find version information') + +with open('README.md', encoding='utf-8') as f: + readme = f.read() +with open('CHANGELOG.md', encoding='utf-8') as f: + changelog = f.read() + +setup( + name=PACKAGE_NAME, + version=version, + description='Microsoft {} Client Library for Python'.format(PACKAGE_PPRINT_NAME), + long_description=readme + "\n\n" + changelog, + long_description_content_type='text/markdown', + license='MIT License', + author='Microsoft Corporation', + author_email='azpysdkhelp@microsoft.com', + url='https://github.com/Azure/azure-sdk-for-python', + classifiers=[ + 'Development Status :: 4 - Beta', + 'Programming Language :: Python', + 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'License :: OSI Approved :: MIT License', + ], + zip_safe=False, + packages=find_packages(exclude=[ + 'tests', + # Exclude packages that will be covered by PEP420 or nspkg + 'azure', + 'azure.ai', + ]), + install_requires=[ + "azure-core<2.0.0,>=1.6.0", + "msrest>=0.6.12", + 'six>=1.6', + ], + extras_require={ + ":python_version<'3.0'": ['azure-ai-nspkg'], + ":python_version<'3.5'": ['typing'], + } +) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/base_testcase_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/base_testcase_async.py new file mode 100644 index 000000000000..58d35312ba42 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/base_testcase_async.py @@ -0,0 +1,493 @@ +# coding=utf-8 +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +import asyncio +import functools +import datetime + +from azure_devtools.scenario_tests.utilities import trim_kwargs_from_test_function +from devtools_testutils import AzureTestCase +from azure_devtools.scenario_tests import ( + ReplayableTest +) + +from azure.ai.metricsadvisor import ( + MetricsAdvisorKeyCredential, +) +from azure.ai.metricsadvisor.aio import ( + MetricsAdvisorClient, + MetricsAdvisorAdministrationClient, +) +from azure.ai.metricsadvisor.models import ( + SQLServerDataFeed, + DataFeedSchema, + Metric, + Dimension, + DataFeedGranularity, + DataFeedIngestionSettings, + DataFeedMissingDataPointFillSettings, + DataFeedRollupSettings, + DataFeedOptions, + MetricAlertConfiguration, + MetricAnomalyAlertScope, + MetricAnomalyAlertConditions, + MetricBoundaryCondition, + TopNGroupScope, + SeverityCondition, + MetricDetectionCondition, + MetricSeriesGroupDetectionCondition, + MetricSingleSeriesDetectionCondition, + SmartDetectionCondition, + SuppressCondition, + ChangeThresholdCondition, + HardThresholdCondition, + EmailHook, + WebHook +) + + +class TestMetricsAdvisorAdministrationClientBaseAsync(AzureTestCase): + FILTER_HEADERS = ReplayableTest.FILTER_HEADERS + ['Ocp-Apim-Subscription-Key', 'x-api-key'] + + def __init__(self, method_name): + super(TestMetricsAdvisorAdministrationClientBaseAsync, self).__init__(method_name) + self.vcr.match_on = ["path", "method", "query"] + if self.is_live: + service_endpoint = self.get_settings_value("METRICS_ADVISOR_ENDPOINT") + subscription_key = self.get_settings_value("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = self.get_settings_value("METRICS_ADVISOR_API_KEY") + self.sql_server_connection_string = self.get_settings_value("METRICS_ADVISOR_SQL_SERVER_CONNECTION_STRING") + self.azure_table_connection_string = self.get_settings_value("METRICS_ADVISOR_AZURE_TABLE_CONNECTION_STRING") + self.azure_blob_connection_string = self.get_settings_value("METRICS_ADVISOR_AZURE_BLOB_CONNECTION_STRING") + self.azure_cosmosdb_connection_string = self.get_settings_value("METRICS_ADVISOR_COSMOS_DB_CONNECTION_STRING") + self.http_request_get_url = self.get_settings_value("METRICS_ADVISOR_HTTP_GET_URL") + self.http_request_post_url = self.get_settings_value("METRICS_ADVISOR_HTTP_POST_URL") + self.application_insights_api_key = self.get_settings_value("METRICS_ADVISOR_APPLICATION_INSIGHTS_API_KEY") + self.azure_data_explorer_connection_string = self.get_settings_value("METRICS_ADVISOR_AZURE_DATA_EXPLORER_CONNECTION_STRING") + self.influxdb_connection_string = self.get_settings_value("METRICS_ADVISOR_INFLUXDB_CONNECTION_STRING") + self.influxdb_password = self.get_settings_value("METRICS_ADVISOR_INFLUXDB_PASSWORD") + self.azure_datalake_account_key = self.get_settings_value("METRICS_ADVISOR_AZURE_DATALAKE_ACCOUNT_KEY") + self.mongodb_connection_string = self.get_settings_value("METRICS_ADVISOR_AZURE_MONGODB_CONNECTION_STRING") + self.mysql_connection_string = self.get_settings_value("METRICS_ADVISOR_MYSQL_CONNECTION_STRING") + self.postgresql_connection_string = self.get_settings_value("METRICS_ADVISOR_POSTGRESQL_CONNECTION_STRING") + self.elasticsearch_auth_header = self.get_settings_value("METRICS_ADVISOR_ELASTICSEARCH_AUTH") + self.anomaly_detection_configuration_id = self.get_settings_value("ANOMALY_DETECTION_CONFIGURATION_ID") + self.data_feed_id = self.get_settings_value("METRICS_ADVISOR_DATA_FEED_ID") + self.metric_id = self.get_settings_value("METRICS_ADVISOR_METRIC_ID") + self.scrubber.register_name_pair( + self.sql_server_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.azure_table_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.azure_blob_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.azure_cosmosdb_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.http_request_get_url, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.http_request_post_url, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.application_insights_api_key, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.azure_data_explorer_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.influxdb_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.influxdb_password, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.azure_datalake_account_key, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.mongodb_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.mysql_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.postgresql_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.elasticsearch_auth_header, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.metric_id, + "metric_id" + ) + self.scrubber.register_name_pair( + self.data_feed_id, + "data_feed_id" + ) + self.scrubber.register_name_pair( + self.anomaly_detection_configuration_id, + "anomaly_detection_configuration_id" + ) + else: + service_endpoint = "https://endpointname.cognitiveservices.azure.com" + subscription_key = "METRICS_ADVISOR_SUBSCRIPTION_KEY" + api_key = "METRICS_ADVISOR_API_KEY" + self.sql_server_connection_string = "SQL_SERVER_CONNECTION_STRING" + self.azure_table_connection_string = "AZURE_TABLE_CONNECTION_STRING" + self.azure_blob_connection_string = "AZURE_BLOB_CONNECTION_STRING" + self.azure_cosmosdb_connection_string = "COSMOS_DB_CONNECTION_STRING" + self.http_request_get_url = "METRICS_ADVISOR_HTTP_GET_URL" + self.http_request_post_url = "METRICS_ADVISOR_HTTP_POST_URL" + self.application_insights_api_key = "METRICS_ADVISOR_APPLICATION_INSIGHTS_API_KEY" + self.azure_data_explorer_connection_string = "METRICS_ADVISOR_AZURE_DATA_EXPLORER_CONNECTION_STRING" + self.influxdb_connection_string = "METRICS_ADVISOR_INFLUXDB_CONNECTION_STRING" + self.influxdb_password = "METRICS_ADVISOR_INFLUXDB_PASSWORD" + self.azure_datalake_account_key = "METRICS_ADVISOR_AZURE_DATALAKE_ACCOUNT_KEY" + self.mongodb_connection_string = "METRICS_ADVISOR_AZURE_MONGODB_CONNECTION_STRING" + self.mysql_connection_string = "METRICS_ADVISOR_MYSQL_CONNECTION_STRING" + self.postgresql_connection_string = "METRICS_ADVISOR_POSTGRESQL_CONNECTION_STRING" + self.elasticsearch_auth_header = "METRICS_ADVISOR_ELASTICSEARCH_AUTH" + self.anomaly_detection_configuration_id = "anomaly_detection_configuration_id" + self.data_feed_id = "data_feed_id" + self.metric_id = "metric_id" + self.admin_client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + async def _create_data_feed(self, name): + name = self.create_random_name(name) + return await self.admin_client.create_data_feed( + name=name, + source=SQLServerDataFeed( + connection_string=self.sql_server_connection_string, + query="select * from adsample2 where Timestamp = @StartTime" + ), + granularity="Daily", + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings="2019-10-01T00:00:00Z", + ) + + async def _create_data_feed_and_anomaly_detection_config(self, name): + data_feed = await self._create_data_feed(name) + detection_config_name = self.create_random_name(name) + detection_config = await self.admin_client.create_metric_anomaly_detection_configuration( + name=detection_config_name, + metric_id=data_feed.metric_ids[0], + description="testing", + whole_series_detection_condition=MetricDetectionCondition( + smart_detection_condition=SmartDetectionCondition( + sensitivity=50, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=50, + min_ratio=50 + ) + ) + ) + ) + return detection_config, data_feed + + async def _create_data_feed_for_update(self, name): + data_feed_name = self.create_random_name(name) + return await self.admin_client.create_data_feed( + name=data_feed_name, + source=SQLServerDataFeed( + connection_string=self.sql_server_connection_string, + query=u"select * from adsample2 where Timestamp = @StartTime" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost", display_name="display cost", description="the cost"), + Metric(name="revenue", display_name="display revenue", description="the revenue") + ], + dimensions=[ + Dimension(name="category", display_name="display category"), + Dimension(name="city", display_name="display city") + ], + timestamp_column="Timestamp" + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + data_source_request_concurrency=0, + ingestion_retry_delay=-1, + ingestion_start_offset=-1, + stop_retry_after=-1, + ), + options=DataFeedOptions( + admins=["yournamehere@microsoft.com"], + data_feed_description="my first data feed", + missing_data_point_fill_settings=DataFeedMissingDataPointFillSettings( + fill_type="SmartFilling" + ), + rollup_settings=DataFeedRollupSettings( + rollup_type="NoRollup", + rollup_method="None", + ), + viewers=["viewers"], + access_mode="Private", + action_link_template="action link template" + ) + + ) + + async def _create_anomaly_alert_config_for_update(self, name): + detection_config, data_feed = await self._create_data_feed_and_anomaly_detection_config(name) + alert_config_name = self.create_random_name(name) + alert_config = await self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + cross_metrics_operator="AND", + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + upper=5.0 + ) + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ) + ], + hook_ids=[] + ) + return alert_config, data_feed, detection_config + + async def _create_detection_config_for_update(self, name): + data_feed = await self._create_data_feed(name) + detection_config_name = self.create_random_name("testupdated") + detection_config = await self.admin_client.create_metric_anomaly_detection_configuration( + name=detection_config_name, + metric_id=data_feed.metric_ids[0], + description="My test metric anomaly detection configuration", + whole_series_detection_condition=MetricDetectionCondition( + cross_conditions_operator="AND", + smart_detection_condition=SmartDetectionCondition( + sensitivity=50, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=50, + min_ratio=50 + ) + ), + hard_threshold_condition=HardThresholdCondition( + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=5 + ), + lower_bound=0, + upper_bound=100 + ), + change_threshold_condition=ChangeThresholdCondition( + change_percentage=50, + shift_point=30, + within_range=True, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + ), + series_detection_conditions=[MetricSingleSeriesDetectionCondition( + series_key={"city": "Shenzhen", "category": "Jewelry"}, + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ) + )], + series_group_detection_conditions=[MetricSeriesGroupDetectionCondition( + series_group_key={"city": "Sao Paulo"}, + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ) + )] + ) + return detection_config, data_feed + + async def _create_email_hook_for_update(self, name): + return await self.admin_client.create_hook( + name=name, + hook=EmailHook( + emails_to_alert=["yournamehere@microsoft.com"], + description="my email hook", + external_link="external link" + ) + ) + + async def _create_web_hook_for_update(self, name): + return await self.admin_client.create_hook( + name=name, + hook=WebHook( + endpoint="https://httpbin.org/post", + description="my web hook", + external_link="external link", + username="krista", + password="123" + ) + ) + + @staticmethod + def await_prepared_test(test_fn): + """Synchronous wrapper for async test methods. Used to avoid making changes + upstream to AbstractPreparer (which doesn't await the functions it wraps) + """ + + @functools.wraps(test_fn) + def run(test_class_instance, *args, **kwargs): + trim_kwargs_from_test_function(test_fn, kwargs) + loop = asyncio.get_event_loop() + return loop.run_until_complete(test_fn(test_class_instance, **kwargs)) + + return run + + +class TestMetricsAdvisorClientBaseAsync(AzureTestCase): + FILTER_HEADERS = ReplayableTest.FILTER_HEADERS + ['Ocp-Apim-Subscription-Key', 'x-api-key'] + + def __init__(self, method_name): + super(TestMetricsAdvisorClientBaseAsync, self).__init__(method_name) + self.vcr.match_on = ["path", "method", "query"] + if self.is_live: + service_endpoint = self.get_settings_value("METRICS_ADVISOR_ENDPOINT") + subscription_key = self.get_settings_value("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = self.get_settings_value("METRICS_ADVISOR_API_KEY") + self.anomaly_detection_configuration_id = self.get_settings_value("ANOMALY_DETECTION_CONFIGURATION_ID") + self.anomaly_alert_configuration_id = self.get_settings_value("ANOMALY_ALERT_CONFIGURATION_ID") + self.metric_id = self.get_settings_value("METRIC_ID") + self.incident_id = self.get_settings_value("INCIDENT_ID") + self.dimension_name = self.get_settings_value("DIMENSION_NAME") + self.feedback_id = self.get_settings_value("FEEDBACK_ID") + self.alert_id = self.get_settings_value("ALERT_ID") + self.scrubber.register_name_pair( + self.anomaly_detection_configuration_id, + "anomaly_detection_configuration_id" + ) + self.scrubber.register_name_pair( + self.anomaly_alert_configuration_id, + "anomaly_alert_configuration_id" + ) + self.scrubber.register_name_pair( + self.metric_id, + "metric_id" + ) + self.scrubber.register_name_pair( + self.incident_id, + "incident_id" + ) + self.scrubber.register_name_pair( + self.dimension_name, + "dimension_name" + ) + self.scrubber.register_name_pair( + self.feedback_id, + "feedback_id" + ) + self.scrubber.register_name_pair( + self.alert_id, + "alert_id" + ) + else: + service_endpoint = "https://endpointname.cognitiveservices.azure.com" + subscription_key = "METRICS_ADVISOR_SUBSCRIPTION_KEY" + api_key = "METRICS_ADVISOR_API_KEY" + self.anomaly_detection_configuration_id = "anomaly_detection_configuration_id" + self.anomaly_alert_configuration_id = "anomaly_alert_configuration_id" + self.metric_id = "metric_id" + self.incident_id = "incident_id" + self.dimension_name = "dimension_name" + self.feedback_id = "feedback_id" + self.alert_id = "alert_id" + + self.client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + @staticmethod + def await_prepared_test(test_fn): + """Synchronous wrapper for async test methods. Used to avoid making changes + upstream to AbstractPreparer (which doesn't await the functions it wraps) + """ + + @functools.wraps(test_fn) + def run(test_class_instance, *args, **kwargs): + trim_kwargs_from_test_function(test_fn, kwargs) + loop = asyncio.get_event_loop() + return loop.run_until_complete(test_fn(test_class_instance, **kwargs)) + + return run diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_multiple_configurations.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_multiple_configurations.yaml new file mode 100644 index 000000000000..e5b86bed2304 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_multiple_configurations.yaml @@ -0,0 +1,280 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "multiple4961244c", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '771' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: ecfe819c-3665-4ef5-a5fc-2467977f46ea + content-length: '0' + date: Sat, 12 Sep 2020 01:20:49 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/aea7b1c8-40f7-473b-807c-abdbc90cd2f4 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '660' + x-request-id: ecfe819c-3665-4ef5-a5fc-2467977f46ea + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/aea7b1c8-40f7-473b-807c-abdbc90cd2f4 + response: + body: + string: "{\"dataFeedId\":\"aea7b1c8-40f7-473b-807c-abdbc90cd2f4\",\"dataFeedName\":\"multiple4961244c\",\"metrics\":[{\"metricId\":\"8f9f259a-749b-415f-b7f5-f64f5c66ea90\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"f21f0af6-f415-47f2-8e1f-37280aa4873e\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-12T01:20:50Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 138be0fa-5f55-4bb5-8d8b-1b28d11f68aa + content-length: '1489' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:20:49 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '242' + x-request-id: 138be0fa-5f55-4bb5-8d8b-1b28d11f68aa + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/aea7b1c8-40f7-473b-807c-abdbc90cd2f4 +- request: + body: '{"name": "multiple4961244c", "description": "testing", "metricId": "8f9f259a-749b-415f-b7f5-f64f5c66ea90", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '280' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: e848cfa2-2a0d-4dc0-8a99-139d15037670 + content-length: '0' + date: Sat, 12 Sep 2020 01:20:51 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/4f20faba-1a41-48ff-bdd5-9f220aa04c3b + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: e848cfa2-2a0d-4dc0-8a99-139d15037670 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/4f20faba-1a41-48ff-bdd5-9f220aa04c3b + response: + body: + string: '{"anomalyDetectionConfigurationId":"4f20faba-1a41-48ff-bdd5-9f220aa04c3b","name":"multiple4961244c","description":"testing","metricId":"8f9f259a-749b-415f-b7f5-f64f5c66ea90","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: fecd797b-89d0-4cec-8475-606d0a861bc8 + content-length: '413' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:20:51 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '63' + x-request-id: fecd797b-89d0-4cec-8475-606d0a861bc8 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/4f20faba-1a41-48ff-bdd5-9f220aa04c3b +- request: + body: '{"name": "testalert4961244c", "crossMetricsOperator": "AND", "hookIds": + [], "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": "4f20faba-1a41-48ff-bdd5-9f220aa04c3b", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", "metricId": + "8f9f259a-749b-415f-b7f5-f64f5c66ea90"}}, {"anomalyDetectionConfigurationId": + "4f20faba-1a41-48ff-bdd5-9f220aa04c3b", "anomalyScopeType": "Dimension", "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}}, {"anomalyDetectionConfigurationId": "4f20faba-1a41-48ff-bdd5-9f220aa04c3b", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '822' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: f678e348-2e09-45ed-9c29-2241f5de7542 + content-length: '0' + date: Sat, 12 Sep 2020 01:20:51 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/33837db7-9d89-44ec-a8cb-7bdf90a462a3 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '313' + x-request-id: f678e348-2e09-45ed-9c29-2241f5de7542 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/33837db7-9d89-44ec-a8cb-7bdf90a462a3 + response: + body: + string: '{"anomalyAlertingConfigurationId":"33837db7-9d89-44ec-a8cb-7bdf90a462a3","name":"testalert4961244c","description":"","crossMetricsOperator":"AND","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"4f20faba-1a41-48ff-bdd5-9f220aa04c3b","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"8f9f259a-749b-415f-b7f5-f64f5c66ea90","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"4f20faba-1a41-48ff-bdd5-9f220aa04c3b","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}},{"anomalyDetectionConfigurationId":"4f20faba-1a41-48ff-bdd5-9f220aa04c3b","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: aaa1ee1b-6d99-40ff-bbed-0d465d7adb95 + content-length: '967' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:20:51 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '73' + x-request-id: aaa1ee1b-6d99-40ff-bbed-0d465d7adb95 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/33837db7-9d89-44ec-a8cb-7bdf90a462a3 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/33837db7-9d89-44ec-a8cb-7bdf90a462a3 + response: + body: + string: '' + headers: + apim-request-id: cf0a1092-0cf5-4adb-ba10-77760d81a4a9 + content-length: '0' + date: Sat, 12 Sep 2020 01:20:52 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '125' + x-request-id: cf0a1092-0cf5-4adb-ba10-77760d81a4a9 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/33837db7-9d89-44ec-a8cb-7bdf90a462a3 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/33837db7-9d89-44ec-a8cb-7bdf90a462a3 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: a2869cb7-ae97-4f66-926f-569b63095b75"}' + headers: + apim-request-id: 958b76af-3ad9-40ae-ba9a-a52c0c5d0f35 + content-length: '123' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:20:52 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '47' + x-request-id: 958b76af-3ad9-40ae-ba9a-a52c0c5d0f35 + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/33837db7-9d89-44ec-a8cb-7bdf90a462a3 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/4f20faba-1a41-48ff-bdd5-9f220aa04c3b + response: + body: + string: '' + headers: + apim-request-id: eccef365-7d93-406c-9474-3c0708ac0b47 + content-length: '0' + date: Sat, 12 Sep 2020 01:20:52 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '71' + x-request-id: eccef365-7d93-406c-9474-3c0708ac0b47 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/4f20faba-1a41-48ff-bdd5-9f220aa04c3b +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/aea7b1c8-40f7-473b-807c-abdbc90cd2f4 + response: + body: + string: '' + headers: + apim-request-id: 83149e90-10e0-4068-81b6-e5e8bb20cfce + content-length: '0' + date: Sat, 12 Sep 2020 01:20:53 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '255' + x-request-id: 83149e90-10e0-4068-81b6-e5e8bb20cfce + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/aea7b1c8-40f7-473b-807c-abdbc90cd2f4 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_series_group_alert_direction_both.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_series_group_alert_direction_both.yaml new file mode 100644 index 000000000000..976c7fe8743c --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_series_group_alert_direction_both.yaml @@ -0,0 +1,275 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "seriesgroupc8de2850", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 1d505a47-d829-46af-a531-7f81311d4c22 + content-length: '0' + date: Sat, 12 Sep 2020 01:20:53 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/190cf75a-a640-45be-bf2b-5e5f89e6f583 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '456' + x-request-id: 1d505a47-d829-46af-a531-7f81311d4c22 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/190cf75a-a640-45be-bf2b-5e5f89e6f583 + response: + body: + string: "{\"dataFeedId\":\"190cf75a-a640-45be-bf2b-5e5f89e6f583\",\"dataFeedName\":\"seriesgroupc8de2850\",\"metrics\":[{\"metricId\":\"a0ffac6c-e9d5-4f82-b252-1face064688a\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"faf7c7d4-6480-43f2-ac78-7ed3ed41a87c\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-12T01:20:54Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 2acda8e1-47ed-4c49-9482-6628593595eb + content-length: '1492' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:20:53 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '133' + x-request-id: 2acda8e1-47ed-4c49-9482-6628593595eb + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/190cf75a-a640-45be-bf2b-5e5f89e6f583 +- request: + body: '{"name": "seriesgroupc8de2850", "description": "testing", "metricId": "a0ffac6c-e9d5-4f82-b252-1face064688a", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: 84b90ce8-4d9d-457d-8526-9b3ce9e22a41 + content-length: '0' + date: Sat, 12 Sep 2020 01:20:54 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/89da0801-fa99-4ba9-9f53-a21dba47c182 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '82' + x-request-id: 84b90ce8-4d9d-457d-8526-9b3ce9e22a41 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/89da0801-fa99-4ba9-9f53-a21dba47c182 + response: + body: + string: '{"anomalyDetectionConfigurationId":"89da0801-fa99-4ba9-9f53-a21dba47c182","name":"seriesgroupc8de2850","description":"testing","metricId":"a0ffac6c-e9d5-4f82-b252-1face064688a","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: 5b291b49-b06d-471f-ae5f-8de68d1970cc + content-length: '416' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:20:54 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '58' + x-request-id: 5b291b49-b06d-471f-ae5f-8de68d1970cc + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/89da0801-fa99-4ba9-9f53-a21dba47c182 +- request: + body: '{"name": "testalertc8de2850", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "89da0801-fa99-4ba9-9f53-a21dba47c182", + "anomalyScopeType": "Dimension", "dimensionAnomalyScope": {"dimension": {"city": + "Shenzhen"}}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", + "metricId": "a0ffac6c-e9d5-4f82-b252-1face064688a"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '368' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: 3b89f4d3-e836-4734-9cc2-dfd0b96fb09a + content-length: '0' + date: Sat, 12 Sep 2020 01:20:54 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/d0d7c38d-0a51-4e31-a1b7-15f15ff4783a + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '155' + x-request-id: 3b89f4d3-e836-4734-9cc2-dfd0b96fb09a + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/d0d7c38d-0a51-4e31-a1b7-15f15ff4783a + response: + body: + string: '{"anomalyAlertingConfigurationId":"d0d7c38d-0a51-4e31-a1b7-15f15ff4783a","name":"testalertc8de2850","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"89da0801-fa99-4ba9-9f53-a21dba47c182","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"a0ffac6c-e9d5-4f82-b252-1face064688a","triggerForMissing":false}}]}' + headers: + apim-request-id: a362bb71-c8bc-4394-b8b3-f883315dbfec + content-length: '488' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:20:55 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '74' + x-request-id: a362bb71-c8bc-4394-b8b3-f883315dbfec + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/d0d7c38d-0a51-4e31-a1b7-15f15ff4783a +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/d0d7c38d-0a51-4e31-a1b7-15f15ff4783a + response: + body: + string: '' + headers: + apim-request-id: 18006000-de55-470e-9088-ff3e8fd2563b + content-length: '0' + date: Sat, 12 Sep 2020 01:20:55 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '76' + x-request-id: 18006000-de55-470e-9088-ff3e8fd2563b + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/d0d7c38d-0a51-4e31-a1b7-15f15ff4783a +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/d0d7c38d-0a51-4e31-a1b7-15f15ff4783a + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: c66b5843-54ae-4b04-af5b-26b58ae82241"}' + headers: + apim-request-id: 9b62a1d3-2a66-42fb-be43-1540cb0c644b + content-length: '123' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:20:55 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '46' + x-request-id: 9b62a1d3-2a66-42fb-be43-1540cb0c644b + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/d0d7c38d-0a51-4e31-a1b7-15f15ff4783a +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/89da0801-fa99-4ba9-9f53-a21dba47c182 + response: + body: + string: '' + headers: + apim-request-id: 93dc550f-f804-4a0d-a822-f5aef5e5686c + content-length: '0' + date: Sat, 12 Sep 2020 01:20:55 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '74' + x-request-id: 93dc550f-f804-4a0d-a822-f5aef5e5686c + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/89da0801-fa99-4ba9-9f53-a21dba47c182 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/190cf75a-a640-45be-bf2b-5e5f89e6f583 + response: + body: + string: '' + headers: + apim-request-id: 7d3d0754-31a7-46ae-81f9-b9ca77bd6809 + content-length: '0' + date: Sat, 12 Sep 2020 01:20:57 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '286' + x-request-id: 7d3d0754-31a7-46ae-81f9-b9ca77bd6809 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/190cf75a-a640-45be-bf2b-5e5f89e6f583 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_series_group_alert_direction_down.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_series_group_alert_direction_down.yaml new file mode 100644 index 000000000000..46ad2e336b9f --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_series_group_alert_direction_down.yaml @@ -0,0 +1,275 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "seriesgroupc8f2285b", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 9e2e9798-5e9c-414f-bea4-917ebab63fd2 + content-length: '0' + date: Sat, 12 Sep 2020 01:20:57 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/7b4ab3f2-5c3d-4179-8569-d6a396246580 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '360' + x-request-id: 9e2e9798-5e9c-414f-bea4-917ebab63fd2 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/7b4ab3f2-5c3d-4179-8569-d6a396246580 + response: + body: + string: "{\"dataFeedId\":\"7b4ab3f2-5c3d-4179-8569-d6a396246580\",\"dataFeedName\":\"seriesgroupc8f2285b\",\"metrics\":[{\"metricId\":\"8a46e32d-043b-40f0-b031-0f19c6aaeb0a\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"a5346667-5df5-4743-89a8-64f8c1d465da\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-12T01:20:58Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 691553c0-ca55-48b3-9218-f4361319b67f + content-length: '1492' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:20:58 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '122' + x-request-id: 691553c0-ca55-48b3-9218-f4361319b67f + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/7b4ab3f2-5c3d-4179-8569-d6a396246580 +- request: + body: '{"name": "seriesgroupc8f2285b", "description": "testing", "metricId": "8a46e32d-043b-40f0-b031-0f19c6aaeb0a", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: ee9ed308-3cc5-4b3c-ba3d-9fd6ea09736d + content-length: '0' + date: Sat, 12 Sep 2020 01:20:58 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/664123f0-28ef-4d4c-b159-c060723b69ad + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '77' + x-request-id: ee9ed308-3cc5-4b3c-ba3d-9fd6ea09736d + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/664123f0-28ef-4d4c-b159-c060723b69ad + response: + body: + string: '{"anomalyDetectionConfigurationId":"664123f0-28ef-4d4c-b159-c060723b69ad","name":"seriesgroupc8f2285b","description":"testing","metricId":"8a46e32d-043b-40f0-b031-0f19c6aaeb0a","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: b8aa5a5d-4f33-40e2-b741-563e81d1f026 + content-length: '416' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:20:58 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '63' + x-request-id: b8aa5a5d-4f33-40e2-b741-563e81d1f026 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/664123f0-28ef-4d4c-b159-c060723b69ad +- request: + body: '{"name": "testalertc8f2285b", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "664123f0-28ef-4d4c-b159-c060723b69ad", + "anomalyScopeType": "Dimension", "dimensionAnomalyScope": {"dimension": {"city": + "Shenzhen"}}, "valueFilter": {"lower": 1.0, "direction": "Down", "metricId": + "8a46e32d-043b-40f0-b031-0f19c6aaeb0a"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '354' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: ac719cea-8709-4433-a761-f6de6f3ac19a + content-length: '0' + date: Sat, 12 Sep 2020 01:20:59 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/3a8bf385-b201-4600-878d-b77defc72537 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '143' + x-request-id: ac719cea-8709-4433-a761-f6de6f3ac19a + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/3a8bf385-b201-4600-878d-b77defc72537 + response: + body: + string: '{"anomalyAlertingConfigurationId":"3a8bf385-b201-4600-878d-b77defc72537","name":"testalertc8f2285b","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"664123f0-28ef-4d4c-b159-c060723b69ad","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"valueFilter":{"lower":1.0,"direction":"Down","metricId":"8a46e32d-043b-40f0-b031-0f19c6aaeb0a","triggerForMissing":false}}]}' + headers: + apim-request-id: 148e0de4-df1b-409c-8e02-97a23a0494a0 + content-length: '476' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:20:59 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '65' + x-request-id: 148e0de4-df1b-409c-8e02-97a23a0494a0 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/3a8bf385-b201-4600-878d-b77defc72537 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/3a8bf385-b201-4600-878d-b77defc72537 + response: + body: + string: '' + headers: + apim-request-id: 583f5eec-9396-41f8-88c4-70b670ba78e7 + content-length: '0' + date: Sat, 12 Sep 2020 01:20:59 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '83' + x-request-id: 583f5eec-9396-41f8-88c4-70b670ba78e7 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/3a8bf385-b201-4600-878d-b77defc72537 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/3a8bf385-b201-4600-878d-b77defc72537 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: a38ac5d5-49cc-4d8a-af3b-9f3ab171540a"}' + headers: + apim-request-id: c5b39a93-623c-4491-a962-7dd68489a266 + content-length: '123' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:20:59 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '45' + x-request-id: c5b39a93-623c-4491-a962-7dd68489a266 + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/3a8bf385-b201-4600-878d-b77defc72537 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/664123f0-28ef-4d4c-b159-c060723b69ad + response: + body: + string: '' + headers: + apim-request-id: 354c9e2d-4ff0-4688-9b8c-b9302466aaf2 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:00 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '69' + x-request-id: 354c9e2d-4ff0-4688-9b8c-b9302466aaf2 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/664123f0-28ef-4d4c-b159-c060723b69ad +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/7b4ab3f2-5c3d-4179-8569-d6a396246580 + response: + body: + string: '' + headers: + apim-request-id: 17137a71-e9ec-4406-a757-b9a3f6da38e5 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:00 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '258' + x-request-id: 17137a71-e9ec-4406-a757-b9a3f6da38e5 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/7b4ab3f2-5c3d-4179-8569-d6a396246580 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_series_group_alert_direction_up.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_series_group_alert_direction_up.yaml new file mode 100644 index 000000000000..13674ccc63b5 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_series_group_alert_direction_up.yaml @@ -0,0 +1,274 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "seriesgroup78cd2788", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 5cab0aff-00dc-46e4-ae0d-244ed6a9b029 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:01 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/476e219e-3128-404a-9143-91a0b78482e7 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '360' + x-request-id: 5cab0aff-00dc-46e4-ae0d-244ed6a9b029 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/476e219e-3128-404a-9143-91a0b78482e7 + response: + body: + string: "{\"dataFeedId\":\"476e219e-3128-404a-9143-91a0b78482e7\",\"dataFeedName\":\"seriesgroup78cd2788\",\"metrics\":[{\"metricId\":\"90adc79b-5a47-45f5-973a-cacbcefbbe9d\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"be3a50de-e862-40c4-b81d-03bdb4388bc8\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-12T01:21:02Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: b4cd6505-8057-4e61-af89-6df2d179698f + content-length: '1492' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:01 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '123' + x-request-id: b4cd6505-8057-4e61-af89-6df2d179698f + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/476e219e-3128-404a-9143-91a0b78482e7 +- request: + body: '{"name": "seriesgroup78cd2788", "description": "testing", "metricId": "90adc79b-5a47-45f5-973a-cacbcefbbe9d", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: 31bcfd6b-81e9-45e6-80c4-8ca3afe9c0a8 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:02 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/9cb580cf-80e3-4765-af06-9c98b832340a + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '82' + x-request-id: 31bcfd6b-81e9-45e6-80c4-8ca3afe9c0a8 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/9cb580cf-80e3-4765-af06-9c98b832340a + response: + body: + string: '{"anomalyDetectionConfigurationId":"9cb580cf-80e3-4765-af06-9c98b832340a","name":"seriesgroup78cd2788","description":"testing","metricId":"90adc79b-5a47-45f5-973a-cacbcefbbe9d","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: 2e5d777b-7ae4-4703-b9d8-9c1ced2e4430 + content-length: '416' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:02 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '59' + x-request-id: 2e5d777b-7ae4-4703-b9d8-9c1ced2e4430 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/9cb580cf-80e3-4765-af06-9c98b832340a +- request: + body: '{"name": "testalert78cd2788", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "9cb580cf-80e3-4765-af06-9c98b832340a", + "anomalyScopeType": "Dimension", "dimensionAnomalyScope": {"dimension": {"city": + "Shenzhen"}}, "valueFilter": {"upper": 5.0, "direction": "Up", "metricId": "90adc79b-5a47-45f5-973a-cacbcefbbe9d"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '352' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: 75743184-866f-4757-b296-830c87edae59 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:02 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/145c38f8-8d4c-4e63-8934-7f75153612bc + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '145' + x-request-id: 75743184-866f-4757-b296-830c87edae59 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/145c38f8-8d4c-4e63-8934-7f75153612bc + response: + body: + string: '{"anomalyAlertingConfigurationId":"145c38f8-8d4c-4e63-8934-7f75153612bc","name":"testalert78cd2788","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"9cb580cf-80e3-4765-af06-9c98b832340a","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"valueFilter":{"upper":5.0,"direction":"Up","metricId":"90adc79b-5a47-45f5-973a-cacbcefbbe9d","triggerForMissing":false}}]}' + headers: + apim-request-id: 14918359-199b-492d-aa03-87f8c197608c + content-length: '474' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:02 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '70' + x-request-id: 14918359-199b-492d-aa03-87f8c197608c + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/145c38f8-8d4c-4e63-8934-7f75153612bc +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/145c38f8-8d4c-4e63-8934-7f75153612bc + response: + body: + string: '' + headers: + apim-request-id: 8f3d316d-0230-43ab-b546-94a3972a3d3c + content-length: '0' + date: Sat, 12 Sep 2020 01:21:03 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '86' + x-request-id: 8f3d316d-0230-43ab-b546-94a3972a3d3c + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/145c38f8-8d4c-4e63-8934-7f75153612bc +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/145c38f8-8d4c-4e63-8934-7f75153612bc + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: d809c73b-8fab-4288-884e-1ee4c928ef71"}' + headers: + apim-request-id: 0a51e551-ae8c-4d7f-b473-356b57a97e46 + content-length: '123' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:03 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '45' + x-request-id: 0a51e551-ae8c-4d7f-b473-356b57a97e46 + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/145c38f8-8d4c-4e63-8934-7f75153612bc +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/9cb580cf-80e3-4765-af06-9c98b832340a + response: + body: + string: '' + headers: + apim-request-id: 5432b644-5eda-4c74-b8fa-bf95001665da + content-length: '0' + date: Sat, 12 Sep 2020 01:21:03 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '76' + x-request-id: 5432b644-5eda-4c74-b8fa-bf95001665da + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/9cb580cf-80e3-4765-af06-9c98b832340a +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/476e219e-3128-404a-9143-91a0b78482e7 + response: + body: + string: '' + headers: + apim-request-id: 91c7d235-dadc-4187-ae74-17c5ea1a24b0 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:03 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '257' + x-request-id: 91c7d235-dadc-4187-ae74-17c5ea1a24b0 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/476e219e-3128-404a-9143-91a0b78482e7 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_series_group_severity_condition.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_series_group_severity_condition.yaml new file mode 100644 index 000000000000..8b39b3164d13 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_series_group_severity_condition.yaml @@ -0,0 +1,275 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "seriesgroupsev7b0f27ad", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '777' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 74bd882d-4338-43ac-8a7b-e9ee21871e60 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:05 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/d3e140dd-bb94-4951-b782-88f1b26cd57b + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '407' + x-request-id: 74bd882d-4338-43ac-8a7b-e9ee21871e60 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/d3e140dd-bb94-4951-b782-88f1b26cd57b + response: + body: + string: "{\"dataFeedId\":\"d3e140dd-bb94-4951-b782-88f1b26cd57b\",\"dataFeedName\":\"seriesgroupsev7b0f27ad\",\"metrics\":[{\"metricId\":\"6ac0c46b-0374-4665-b869-8bd7b792251d\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"8a4a3240-c1fa-4f00-b439-4499f515475b\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-12T01:21:05Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 4628c668-0c79-44fc-985b-8ab8e6c5598a + content-length: '1495' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:05 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '137' + x-request-id: 4628c668-0c79-44fc-985b-8ab8e6c5598a + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/d3e140dd-bb94-4951-b782-88f1b26cd57b +- request: + body: '{"name": "seriesgroupsev7b0f27ad", "description": "testing", "metricId": + "6ac0c46b-0374-4665-b869-8bd7b792251d", "wholeMetricConfiguration": {"smartDetectionCondition": + {"sensitivity": 50.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 50, "minRatio": 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '286' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: 7f9e4cc0-3e6e-4dff-ac72-f4b2f320f6a7 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:06 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bd09dc0a-7e80-4725-9139-8496518402f3 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: 7f9e4cc0-3e6e-4dff-ac72-f4b2f320f6a7 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bd09dc0a-7e80-4725-9139-8496518402f3 + response: + body: + string: '{"anomalyDetectionConfigurationId":"bd09dc0a-7e80-4725-9139-8496518402f3","name":"seriesgroupsev7b0f27ad","description":"testing","metricId":"6ac0c46b-0374-4665-b869-8bd7b792251d","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: c68f4cbe-dc31-456e-833b-83720794d94a + content-length: '419' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:06 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '64' + x-request-id: c68f4cbe-dc31-456e-833b-83720794d94a + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bd09dc0a-7e80-4725-9139-8496518402f3 +- request: + body: '{"name": "testalert7b0f27ad", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "bd09dc0a-7e80-4725-9139-8496518402f3", + "anomalyScopeType": "Dimension", "dimensionAnomalyScope": {"dimension": {"city": + "Shenzhen"}}, "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '325' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: 1075aa24-bea6-4889-a25b-4d972932a3e7 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:06 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/e47cc619-f119-4235-8ad1-2db1641af6f2 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '144' + x-request-id: 1075aa24-bea6-4889-a25b-4d972932a3e7 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/e47cc619-f119-4235-8ad1-2db1641af6f2 + response: + body: + string: '{"anomalyAlertingConfigurationId":"e47cc619-f119-4235-8ad1-2db1641af6f2","name":"testalert7b0f27ad","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"bd09dc0a-7e80-4725-9139-8496518402f3","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: e9c826ab-f020-4b73-aeed-a98bdc2d16c1 + content-length: '423' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:06 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '65' + x-request-id: e9c826ab-f020-4b73-aeed-a98bdc2d16c1 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/e47cc619-f119-4235-8ad1-2db1641af6f2 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/e47cc619-f119-4235-8ad1-2db1641af6f2 + response: + body: + string: '' + headers: + apim-request-id: cd7769fc-2c8e-4aac-b1c4-53300e19a6d3 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:07 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '87' + x-request-id: cd7769fc-2c8e-4aac-b1c4-53300e19a6d3 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/e47cc619-f119-4235-8ad1-2db1641af6f2 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/e47cc619-f119-4235-8ad1-2db1641af6f2 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: 8fd2362b-19b2-4048-9ae7-5b9243420567"}' + headers: + apim-request-id: 0830800a-6c13-4f57-a6ad-253173bfbcfb + content-length: '123' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:07 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '44' + x-request-id: 0830800a-6c13-4f57-a6ad-253173bfbcfb + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/e47cc619-f119-4235-8ad1-2db1641af6f2 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bd09dc0a-7e80-4725-9139-8496518402f3 + response: + body: + string: '' + headers: + apim-request-id: 58c3dbe5-b727-4651-bf04-345e6c13a3dc + content-length: '0' + date: Sat, 12 Sep 2020 01:21:07 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '67' + x-request-id: 58c3dbe5-b727-4651-bf04-345e6c13a3dc + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bd09dc0a-7e80-4725-9139-8496518402f3 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/d3e140dd-bb94-4951-b782-88f1b26cd57b + response: + body: + string: '' + headers: + apim-request-id: 744921d2-1f46-46de-b7bd-e2cd3236b724 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:08 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '256' + x-request-id: 744921d2-1f46-46de-b7bd-e2cd3236b724 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/d3e140dd-bb94-4951-b782-88f1b26cd57b +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_snooze_condition.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_snooze_condition.yaml new file mode 100644 index 000000000000..57ce14cbdab6 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_snooze_condition.yaml @@ -0,0 +1,274 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "topnup54a8215a", "granularityName": + "Daily", "metrics": [{"metricName": "cost"}, {"metricName": "revenue"}], "dimension": + [{"dimensionName": "category"}, {"dimensionName": "city"}], "dataStartFrom": + "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": 0, "maxConcurrency": -1, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": + {"connectionString": "connectionstring", "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '769' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: c89a08c9-e53b-4d87-8f4b-252b73370477 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:09 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/2f333672-85df-407b-876e-76005fa8cef9 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '389' + x-request-id: c89a08c9-e53b-4d87-8f4b-252b73370477 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/2f333672-85df-407b-876e-76005fa8cef9 + response: + body: + string: "{\"dataFeedId\":\"2f333672-85df-407b-876e-76005fa8cef9\",\"dataFeedName\":\"topnup54a8215a\",\"metrics\":[{\"metricId\":\"56447537-0e78-4946-a5b9-6f0081ab41f6\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"d394c7e1-3812-4ec1-8356-26cd1fff2e9d\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-12T01:21:09Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 70318223-45ac-40c9-93f2-0a8c1fc63395 + content-length: '1487' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:09 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '124' + x-request-id: 70318223-45ac-40c9-93f2-0a8c1fc63395 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/2f333672-85df-407b-876e-76005fa8cef9 +- request: + body: '{"name": "topnup54a8215a", "description": "testing", "metricId": "56447537-0e78-4946-a5b9-6f0081ab41f6", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '278' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: 9dd6bf76-1d23-4d46-aeaa-db5dbbb3f739 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:09 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/8263f7fc-8b5b-47fd-b4a1-1ee45b22d8cc + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '87' + x-request-id: 9dd6bf76-1d23-4d46-aeaa-db5dbbb3f739 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/8263f7fc-8b5b-47fd-b4a1-1ee45b22d8cc + response: + body: + string: '{"anomalyDetectionConfigurationId":"8263f7fc-8b5b-47fd-b4a1-1ee45b22d8cc","name":"topnup54a8215a","description":"testing","metricId":"56447537-0e78-4946-a5b9-6f0081ab41f6","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: 8841da52-0950-4c73-9027-260bc8b857cc + content-length: '411' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:10 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '62' + x-request-id: 8841da52-0950-4c73-9027-260bc8b857cc + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/8263f7fc-8b5b-47fd-b4a1-1ee45b22d8cc +- request: + body: '{"name": "testalert54a8215a", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "8263f7fc-8b5b-47fd-b4a1-1ee45b22d8cc", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "snoozeFilter": {"autoSnooze": 5, "snoozeScope": "Metric", "onlyForSuccessive": + true}}]}' + headers: + Accept: + - application/json + Content-Length: + - '334' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: af7c14e5-8468-4459-b4d2-99484814d09a + content-length: '0' + date: Sat, 12 Sep 2020 01:21:10 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/52854141-05a3-4259-8da8-49fd07ff380d + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '87' + x-request-id: af7c14e5-8468-4459-b4d2-99484814d09a + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/52854141-05a3-4259-8da8-49fd07ff380d + response: + body: + string: '{"anomalyAlertingConfigurationId":"52854141-05a3-4259-8da8-49fd07ff380d","name":"testalert54a8215a","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"8263f7fc-8b5b-47fd-b4a1-1ee45b22d8cc","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"snoozeFilter":{"autoSnooze":5,"snoozeScope":"Metric","onlyForSuccessive":true}}]}' + headers: + apim-request-id: 50e53e86-0caf-495b-8ea3-4804c0f39477 + content-length: '427' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:10 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '69' + x-request-id: 50e53e86-0caf-495b-8ea3-4804c0f39477 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/52854141-05a3-4259-8da8-49fd07ff380d +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/52854141-05a3-4259-8da8-49fd07ff380d + response: + body: + string: '' + headers: + apim-request-id: 8f52d2ad-a97c-4662-a1be-6cc604a0420a + content-length: '0' + date: Sat, 12 Sep 2020 01:21:10 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '90' + x-request-id: 8f52d2ad-a97c-4662-a1be-6cc604a0420a + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/52854141-05a3-4259-8da8-49fd07ff380d +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/52854141-05a3-4259-8da8-49fd07ff380d + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: e53cc5cb-2d76-4726-8cd6-1fcaf5ccce9c"}' + headers: + apim-request-id: 10563489-c28d-4b19-bc3d-339489c26f0d + content-length: '123' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:12 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '45' + x-request-id: 10563489-c28d-4b19-bc3d-339489c26f0d + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/52854141-05a3-4259-8da8-49fd07ff380d +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/8263f7fc-8b5b-47fd-b4a1-1ee45b22d8cc + response: + body: + string: '' + headers: + apim-request-id: 0a851483-bee7-44e0-94d3-e7884d483d8d + content-length: '0' + date: Sat, 12 Sep 2020 01:21:12 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '74' + x-request-id: 0a851483-bee7-44e0-94d3-e7884d483d8d + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/8263f7fc-8b5b-47fd-b4a1-1ee45b22d8cc +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/2f333672-85df-407b-876e-76005fa8cef9 + response: + body: + string: '' + headers: + apim-request-id: 33882783-17d1-4968-b8d0-fec5c7e67134 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:12 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '280' + x-request-id: 33882783-17d1-4968-b8d0-fec5c7e67134 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/2f333672-85df-407b-876e-76005fa8cef9 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_top_n_alert_direction_both.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_top_n_alert_direction_both.yaml new file mode 100644 index 000000000000..0a07d1a1074a --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_top_n_alert_direction_both.yaml @@ -0,0 +1,274 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "topnupb6152559", "granularityName": + "Daily", "metrics": [{"metricName": "cost"}, {"metricName": "revenue"}], "dimension": + [{"dimensionName": "category"}, {"dimensionName": "city"}], "dataStartFrom": + "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": 0, "maxConcurrency": -1, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": + {"connectionString": "connectionstring", "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '769' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 0c45245c-7207-40d1-87cd-cbe46ea1a4f3 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:13 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/c05ea5ff-b520-457f-9302-50152bda2c4d + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '379' + x-request-id: 0c45245c-7207-40d1-87cd-cbe46ea1a4f3 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/c05ea5ff-b520-457f-9302-50152bda2c4d + response: + body: + string: "{\"dataFeedId\":\"c05ea5ff-b520-457f-9302-50152bda2c4d\",\"dataFeedName\":\"topnupb6152559\",\"metrics\":[{\"metricId\":\"d14feb1c-be33-49db-9436-ea6424bb92bb\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"0c2f6c8b-cae1-4d20-b070-a58108c8e327\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-12T01:21:13Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 305e25c3-838c-47e6-8a9c-f9b8f3f7ea37 + content-length: '1487' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:13 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '134' + x-request-id: 305e25c3-838c-47e6-8a9c-f9b8f3f7ea37 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/c05ea5ff-b520-457f-9302-50152bda2c4d +- request: + body: '{"name": "topnupb6152559", "description": "testing", "metricId": "d14feb1c-be33-49db-9436-ea6424bb92bb", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '278' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: 734fc8c6-e00c-4273-b591-44e327345d0e + content-length: '0' + date: Sat, 12 Sep 2020 01:21:13 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/2f9b8969-e73b-43b6-b9b6-37dc196c49be + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '88' + x-request-id: 734fc8c6-e00c-4273-b591-44e327345d0e + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/2f9b8969-e73b-43b6-b9b6-37dc196c49be + response: + body: + string: '{"anomalyDetectionConfigurationId":"2f9b8969-e73b-43b6-b9b6-37dc196c49be","name":"topnupb6152559","description":"testing","metricId":"d14feb1c-be33-49db-9436-ea6424bb92bb","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: d26a5573-9f71-4ce9-a24b-fe4ae6e9c3e4 + content-length: '411' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:14 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '60' + x-request-id: d26a5573-9f71-4ce9-a24b-fe4ae6e9c3e4 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/2f9b8969-e73b-43b6-b9b6-37dc196c49be +- request: + body: '{"name": "testalertb6152559", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "2f9b8969-e73b-43b6-b9b6-37dc196c49be", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", "metricId": + "d14feb1c-be33-49db-9436-ea6424bb92bb"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '365' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: de72bb70-6429-4308-a6ec-f3ebd03a7ce7 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:14 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/d4c42634-b61e-4ba1-9010-e0544dab62de + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '97' + x-request-id: de72bb70-6429-4308-a6ec-f3ebd03a7ce7 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/d4c42634-b61e-4ba1-9010-e0544dab62de + response: + body: + string: '{"anomalyAlertingConfigurationId":"d4c42634-b61e-4ba1-9010-e0544dab62de","name":"testalertb6152559","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"2f9b8969-e73b-43b6-b9b6-37dc196c49be","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"d14feb1c-be33-49db-9436-ea6424bb92bb","triggerForMissing":false}}]}' + headers: + apim-request-id: 8c71e940-10b2-4287-9760-90637938dd8c + content-length: '482' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:14 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '77' + x-request-id: 8c71e940-10b2-4287-9760-90637938dd8c + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/d4c42634-b61e-4ba1-9010-e0544dab62de +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/d4c42634-b61e-4ba1-9010-e0544dab62de + response: + body: + string: '' + headers: + apim-request-id: fe7cfe55-6a55-48c5-b4c4-7053dd89b842 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:14 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '82' + x-request-id: fe7cfe55-6a55-48c5-b4c4-7053dd89b842 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/d4c42634-b61e-4ba1-9010-e0544dab62de +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/d4c42634-b61e-4ba1-9010-e0544dab62de + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: 1b422d14-a6b6-447d-a431-583c9967a3bb"}' + headers: + apim-request-id: d847a4db-9990-4cf7-ac44-244168691665 + content-length: '123' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:15 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '45' + x-request-id: d847a4db-9990-4cf7-ac44-244168691665 + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/d4c42634-b61e-4ba1-9010-e0544dab62de +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/2f9b8969-e73b-43b6-b9b6-37dc196c49be + response: + body: + string: '' + headers: + apim-request-id: 526c401a-c504-4e87-944e-15aa65d0b021 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:15 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '78' + x-request-id: 526c401a-c504-4e87-944e-15aa65d0b021 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/2f9b8969-e73b-43b6-b9b6-37dc196c49be +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/c05ea5ff-b520-457f-9302-50152bda2c4d + response: + body: + string: '' + headers: + apim-request-id: 9e6605d9-4b4b-42d7-b31a-5c4e28dd9707 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:15 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '266' + x-request-id: 9e6605d9-4b4b-42d7-b31a-5c4e28dd9707 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/c05ea5ff-b520-457f-9302-50152bda2c4d +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_top_n_alert_direction_down.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_top_n_alert_direction_down.yaml new file mode 100644 index 000000000000..bd255e57bcff --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_top_n_alert_direction_down.yaml @@ -0,0 +1,273 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "topnupb6292564", "granularityName": + "Daily", "metrics": [{"metricName": "cost"}, {"metricName": "revenue"}], "dimension": + [{"dimensionName": "category"}, {"dimensionName": "city"}], "dataStartFrom": + "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": 0, "maxConcurrency": -1, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": + {"connectionString": "connectionstring", "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '769' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 06145c1f-f6c3-49ce-925c-574a100f62c9 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:17 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/bbd1b296-4a2b-4e23-b082-4c971a3fb016 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '333' + x-request-id: 06145c1f-f6c3-49ce-925c-574a100f62c9 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/bbd1b296-4a2b-4e23-b082-4c971a3fb016 + response: + body: + string: "{\"dataFeedId\":\"bbd1b296-4a2b-4e23-b082-4c971a3fb016\",\"dataFeedName\":\"topnupb6292564\",\"metrics\":[{\"metricId\":\"d0d47403-168f-4cc2-bbc3-819604576042\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"807d905a-db36-4306-b37d-b294592a6098\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-12T01:21:17Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 93129d74-1825-4c8d-996b-54399add6e2b + content-length: '1487' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:17 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '133' + x-request-id: 93129d74-1825-4c8d-996b-54399add6e2b + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/bbd1b296-4a2b-4e23-b082-4c971a3fb016 +- request: + body: '{"name": "topnupb6292564", "description": "testing", "metricId": "d0d47403-168f-4cc2-bbc3-819604576042", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '278' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: e4d163f1-de53-49b7-b33b-76491fd8bdf0 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:17 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/fa58950f-ae92-445e-935e-f07920b4017b + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '77' + x-request-id: e4d163f1-de53-49b7-b33b-76491fd8bdf0 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/fa58950f-ae92-445e-935e-f07920b4017b + response: + body: + string: '{"anomalyDetectionConfigurationId":"fa58950f-ae92-445e-935e-f07920b4017b","name":"topnupb6292564","description":"testing","metricId":"d0d47403-168f-4cc2-bbc3-819604576042","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: 17ba7fab-4f91-4797-a65b-1f8524f0a8b6 + content-length: '411' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:17 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '63' + x-request-id: 17ba7fab-4f91-4797-a65b-1f8524f0a8b6 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/fa58950f-ae92-445e-935e-f07920b4017b +- request: + body: '{"name": "testalertb6292564", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "fa58950f-ae92-445e-935e-f07920b4017b", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"lower": 1.0, "direction": "Down", "metricId": "d0d47403-168f-4cc2-bbc3-819604576042"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '351' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: a99932a1-826b-439c-b42d-2288e3bd34ae + content-length: '0' + date: Sat, 12 Sep 2020 01:21:18 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/db0ed4d4-0116-4209-8a90-bc03610ef997 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '94' + x-request-id: a99932a1-826b-439c-b42d-2288e3bd34ae + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/db0ed4d4-0116-4209-8a90-bc03610ef997 + response: + body: + string: '{"anomalyAlertingConfigurationId":"db0ed4d4-0116-4209-8a90-bc03610ef997","name":"testalertb6292564","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"fa58950f-ae92-445e-935e-f07920b4017b","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"lower":1.0,"direction":"Down","metricId":"d0d47403-168f-4cc2-bbc3-819604576042","triggerForMissing":false}}]}' + headers: + apim-request-id: efb0f771-c8a5-4a81-8008-ed907bcf4a4f + content-length: '470' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:18 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '68' + x-request-id: efb0f771-c8a5-4a81-8008-ed907bcf4a4f + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/db0ed4d4-0116-4209-8a90-bc03610ef997 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/db0ed4d4-0116-4209-8a90-bc03610ef997 + response: + body: + string: '' + headers: + apim-request-id: 8740d8c0-4fce-4f01-b1f1-e52b62754c8b + content-length: '0' + date: Sat, 12 Sep 2020 01:21:18 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '81' + x-request-id: 8740d8c0-4fce-4f01-b1f1-e52b62754c8b + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/db0ed4d4-0116-4209-8a90-bc03610ef997 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/db0ed4d4-0116-4209-8a90-bc03610ef997 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: 34f1a50f-f28f-4459-a4b5-d50db9dc1453"}' + headers: + apim-request-id: 2b599975-c777-4c22-97f4-efd14e8c670d + content-length: '123' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:18 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '44' + x-request-id: 2b599975-c777-4c22-97f4-efd14e8c670d + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/db0ed4d4-0116-4209-8a90-bc03610ef997 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/fa58950f-ae92-445e-935e-f07920b4017b + response: + body: + string: '' + headers: + apim-request-id: 502a80ef-3af2-4af5-a9c1-ddabe18cd738 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:19 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '73' + x-request-id: 502a80ef-3af2-4af5-a9c1-ddabe18cd738 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/fa58950f-ae92-445e-935e-f07920b4017b +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/bbd1b296-4a2b-4e23-b082-4c971a3fb016 + response: + body: + string: '' + headers: + apim-request-id: 5a77e2e3-8447-47ba-8a90-7fc9a5ba5106 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:19 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '268' + x-request-id: 5a77e2e3-8447-47ba-8a90-7fc9a5ba5106 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/bbd1b296-4a2b-4e23-b082-4c971a3fb016 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_top_n_alert_direction_up.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_top_n_alert_direction_up.yaml new file mode 100644 index 000000000000..c1127097b9df --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_top_n_alert_direction_up.yaml @@ -0,0 +1,273 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "topnup6bf22491", "granularityName": + "Daily", "metrics": [{"metricName": "cost"}, {"metricName": "revenue"}], "dimension": + [{"dimensionName": "category"}, {"dimensionName": "city"}], "dataStartFrom": + "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": 0, "maxConcurrency": -1, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": + {"connectionString": "connectionstring", "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '769' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 4ac4dd31-7879-4756-9049-cf19018c3d6e + content-length: '0' + date: Sat, 12 Sep 2020 01:21:21 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/93cc4e67-52f0-4949-80b0-6da125b09f3a + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '344' + x-request-id: 4ac4dd31-7879-4756-9049-cf19018c3d6e + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/93cc4e67-52f0-4949-80b0-6da125b09f3a + response: + body: + string: "{\"dataFeedId\":\"93cc4e67-52f0-4949-80b0-6da125b09f3a\",\"dataFeedName\":\"topnup6bf22491\",\"metrics\":[{\"metricId\":\"73e2f1e2-bfa7-4bc4-957d-8216cf985bfe\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"80a39972-25e6-4d9b-acd4-ae5c396ed5ea\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-12T01:21:21Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 0294ac27-61c8-4dec-be8b-d99368d2db21 + content-length: '1487' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:21 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '117' + x-request-id: 0294ac27-61c8-4dec-be8b-d99368d2db21 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/93cc4e67-52f0-4949-80b0-6da125b09f3a +- request: + body: '{"name": "topnup6bf22491", "description": "testing", "metricId": "73e2f1e2-bfa7-4bc4-957d-8216cf985bfe", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '278' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: 895b4d69-52cc-4d44-9452-8f17013b1976 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:21 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/3062c4dd-4ccf-4bb2-af77-7de0cbb171de + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '77' + x-request-id: 895b4d69-52cc-4d44-9452-8f17013b1976 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/3062c4dd-4ccf-4bb2-af77-7de0cbb171de + response: + body: + string: '{"anomalyDetectionConfigurationId":"3062c4dd-4ccf-4bb2-af77-7de0cbb171de","name":"topnup6bf22491","description":"testing","metricId":"73e2f1e2-bfa7-4bc4-957d-8216cf985bfe","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: de1bb7b6-669f-434b-890e-7c469c56b59c + content-length: '411' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:22 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '65' + x-request-id: de1bb7b6-669f-434b-890e-7c469c56b59c + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/3062c4dd-4ccf-4bb2-af77-7de0cbb171de +- request: + body: '{"name": "testalert6bf22491", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "3062c4dd-4ccf-4bb2-af77-7de0cbb171de", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"upper": 5.0, "direction": "Up", "metricId": "73e2f1e2-bfa7-4bc4-957d-8216cf985bfe"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '349' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: 18df53bb-56d2-4d8d-a0ef-e06f175088bd + content-length: '0' + date: Sat, 12 Sep 2020 01:21:22 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/b329a17f-1f19-4b72-9828-4239e46f9b53 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '90' + x-request-id: 18df53bb-56d2-4d8d-a0ef-e06f175088bd + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/b329a17f-1f19-4b72-9828-4239e46f9b53 + response: + body: + string: '{"anomalyAlertingConfigurationId":"b329a17f-1f19-4b72-9828-4239e46f9b53","name":"testalert6bf22491","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"3062c4dd-4ccf-4bb2-af77-7de0cbb171de","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"upper":5.0,"direction":"Up","metricId":"73e2f1e2-bfa7-4bc4-957d-8216cf985bfe","triggerForMissing":false}}]}' + headers: + apim-request-id: 75f39f6e-f158-4f1d-9af7-6c2f7544acd1 + content-length: '468' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:22 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '71' + x-request-id: 75f39f6e-f158-4f1d-9af7-6c2f7544acd1 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/b329a17f-1f19-4b72-9828-4239e46f9b53 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/b329a17f-1f19-4b72-9828-4239e46f9b53 + response: + body: + string: '' + headers: + apim-request-id: eaa3627c-66d6-4c7f-8d13-d144c36c1cb6 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:23 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '90' + x-request-id: eaa3627c-66d6-4c7f-8d13-d144c36c1cb6 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/b329a17f-1f19-4b72-9828-4239e46f9b53 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/b329a17f-1f19-4b72-9828-4239e46f9b53 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: 3cb7c940-cb67-4a7a-8353-6883d0886cd4"}' + headers: + apim-request-id: 066b83d0-b9d3-44c3-b12b-a7653b30993e + content-length: '123' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:23 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '41' + x-request-id: 066b83d0-b9d3-44c3-b12b-a7653b30993e + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/b329a17f-1f19-4b72-9828-4239e46f9b53 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/3062c4dd-4ccf-4bb2-af77-7de0cbb171de + response: + body: + string: '' + headers: + apim-request-id: 0469bd3e-35b9-49fc-8ba4-618580ddf5ae + content-length: '0' + date: Sat, 12 Sep 2020 01:21:23 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '73' + x-request-id: 0469bd3e-35b9-49fc-8ba4-618580ddf5ae + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/3062c4dd-4ccf-4bb2-af77-7de0cbb171de +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/93cc4e67-52f0-4949-80b0-6da125b09f3a + response: + body: + string: '' + headers: + apim-request-id: eef57d67-9385-4d72-bb9a-03440da09373 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:24 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '250' + x-request-id: eef57d67-9385-4d72-bb9a-03440da09373 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/93cc4e67-52f0-4949-80b0-6da125b09f3a +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_top_n_severity_condition.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_top_n_severity_condition.yaml new file mode 100644 index 000000000000..29e83f5eef69 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_top_n_severity_condition.yaml @@ -0,0 +1,273 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "topnup6e3424b6", "granularityName": + "Daily", "metrics": [{"metricName": "cost"}, {"metricName": "revenue"}], "dimension": + [{"dimensionName": "category"}, {"dimensionName": "city"}], "dataStartFrom": + "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": 0, "maxConcurrency": -1, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": + {"connectionString": "connectionstring", "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '769' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 3522ab76-f433-4213-acf2-a82fd5a77b44 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:25 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/5fb1869c-19b5-4c46-a5bc-8203e7805595 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '379' + x-request-id: 3522ab76-f433-4213-acf2-a82fd5a77b44 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/5fb1869c-19b5-4c46-a5bc-8203e7805595 + response: + body: + string: "{\"dataFeedId\":\"5fb1869c-19b5-4c46-a5bc-8203e7805595\",\"dataFeedName\":\"topnup6e3424b6\",\"metrics\":[{\"metricId\":\"c000b312-4f57-4db9-a364-e562fa41b1a6\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"5fc3abba-09a3-4c4c-85c7-1325f266f31d\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-12T01:21:25Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: ae3cbb13-e348-441f-8eb6-d16bedc584a1 + content-length: '1487' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:25 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '124' + x-request-id: ae3cbb13-e348-441f-8eb6-d16bedc584a1 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/5fb1869c-19b5-4c46-a5bc-8203e7805595 +- request: + body: '{"name": "topnup6e3424b6", "description": "testing", "metricId": "c000b312-4f57-4db9-a364-e562fa41b1a6", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '278' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: cc71cb62-bfae-432d-9d6c-0aab100e902c + content-length: '0' + date: Sat, 12 Sep 2020 01:21:25 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/67dd8c87-da64-469b-872c-0fae189c68bb + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '81' + x-request-id: cc71cb62-bfae-432d-9d6c-0aab100e902c + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/67dd8c87-da64-469b-872c-0fae189c68bb + response: + body: + string: '{"anomalyDetectionConfigurationId":"67dd8c87-da64-469b-872c-0fae189c68bb","name":"topnup6e3424b6","description":"testing","metricId":"c000b312-4f57-4db9-a364-e562fa41b1a6","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: 0ab5ad82-3b49-412c-b365-fe796ac31056 + content-length: '411' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:26 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '67' + x-request-id: 0ab5ad82-3b49-412c-b365-fe796ac31056 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/67dd8c87-da64-469b-872c-0fae189c68bb +- request: + body: '{"name": "testalert6e3424b6", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "67dd8c87-da64-469b-872c-0fae189c68bb", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": "High"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '322' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: 3d60b284-3208-445f-86ba-aa7332808e8f + content-length: '0' + date: Sat, 12 Sep 2020 01:21:26 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/0bf83f4e-1496-485d-8517-0fbb794ac29f + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '97' + x-request-id: 3d60b284-3208-445f-86ba-aa7332808e8f + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/0bf83f4e-1496-485d-8517-0fbb794ac29f + response: + body: + string: '{"anomalyAlertingConfigurationId":"0bf83f4e-1496-485d-8517-0fbb794ac29f","name":"testalert6e3424b6","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"67dd8c87-da64-469b-872c-0fae189c68bb","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: 2e669609-4c92-49c5-b2d1-6d63e3d3952d + content-length: '417' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:26 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '67' + x-request-id: 2e669609-4c92-49c5-b2d1-6d63e3d3952d + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/0bf83f4e-1496-485d-8517-0fbb794ac29f +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/0bf83f4e-1496-485d-8517-0fbb794ac29f + response: + body: + string: '' + headers: + apim-request-id: f0bf3063-c6d4-4c4b-aa41-98f8ab7a7516 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:26 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '84' + x-request-id: f0bf3063-c6d4-4c4b-aa41-98f8ab7a7516 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/0bf83f4e-1496-485d-8517-0fbb794ac29f +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/0bf83f4e-1496-485d-8517-0fbb794ac29f + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: 29299204-61c2-44fe-8ccf-5205550e86d7"}' + headers: + apim-request-id: a05d2327-3895-4422-a643-5d058e6a59f9 + content-length: '123' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:27 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '44' + x-request-id: a05d2327-3895-4422-a643-5d058e6a59f9 + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/0bf83f4e-1496-485d-8517-0fbb794ac29f +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/67dd8c87-da64-469b-872c-0fae189c68bb + response: + body: + string: '' + headers: + apim-request-id: b58cfcc4-1b66-4fab-aca1-cfdd12ce0fde + content-length: '0' + date: Sat, 12 Sep 2020 01:21:27 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '74' + x-request-id: b58cfcc4-1b66-4fab-aca1-cfdd12ce0fde + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/67dd8c87-da64-469b-872c-0fae189c68bb +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/5fb1869c-19b5-4c46-a5bc-8203e7805595 + response: + body: + string: '' + headers: + apim-request-id: d27cef95-241d-4a35-a04f-ddadde43024a + content-length: '0' + date: Sat, 12 Sep 2020 01:21:27 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '278' + x-request-id: d27cef95-241d-4a35-a04f-ddadde43024a + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/5fb1869c-19b5-4c46-a5bc-8203e7805595 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_whole_series_alert_direction_both.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_whole_series_alert_direction_both.yaml new file mode 100644 index 000000000000..4cc40fd90b69 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_whole_series_alert_direction_both.yaml @@ -0,0 +1,274 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "wholeseriesc7b92842", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 51384778-54de-44df-8293-0089241f273e + content-length: '0' + date: Sat, 12 Sep 2020 01:21:34 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/d9d26fc5-40da-4752-9d4e-5705bb306674 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '5439' + x-request-id: 51384778-54de-44df-8293-0089241f273e + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/d9d26fc5-40da-4752-9d4e-5705bb306674 + response: + body: + string: "{\"dataFeedId\":\"d9d26fc5-40da-4752-9d4e-5705bb306674\",\"dataFeedName\":\"wholeseriesc7b92842\",\"metrics\":[{\"metricId\":\"03ae25ef-d789-452a-aad9-d491a066073f\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"96ad90d7-e930-4a94-ada2-f088f86764ed\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-12T01:21:34Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: a1448f6c-42a6-4065-8737-73087378053f + content-length: '1492' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:34 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '117' + x-request-id: a1448f6c-42a6-4065-8737-73087378053f + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/d9d26fc5-40da-4752-9d4e-5705bb306674 +- request: + body: '{"name": "wholeseriesc7b92842", "description": "testing", "metricId": "03ae25ef-d789-452a-aad9-d491a066073f", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: bed97bd3-203b-4e0d-a3db-22574abf9577 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:34 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/dd94796b-67c4-42be-b56b-38ec762eb5b0 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '76' + x-request-id: bed97bd3-203b-4e0d-a3db-22574abf9577 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/dd94796b-67c4-42be-b56b-38ec762eb5b0 + response: + body: + string: '{"anomalyDetectionConfigurationId":"dd94796b-67c4-42be-b56b-38ec762eb5b0","name":"wholeseriesc7b92842","description":"testing","metricId":"03ae25ef-d789-452a-aad9-d491a066073f","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: 5bf030ed-c6ff-4aab-82d9-e71d3bf8a880 + content-length: '416' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:35 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '62' + x-request-id: 5bf030ed-c6ff-4aab-82d9-e71d3bf8a880 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/dd94796b-67c4-42be-b56b-38ec762eb5b0 +- request: + body: '{"name": "testalertc7b92842", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "dd94796b-67c4-42be-b56b-38ec762eb5b0", + "anomalyScopeType": "All", "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": + "Both", "metricId": "03ae25ef-d789-452a-aad9-d491a066073f"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '300' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: 06c9527e-059d-41a3-b659-b81b7a5e4cf6 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:35 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/c3760d72-d24e-44e0-a251-bbfe897bf336 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '86' + x-request-id: 06c9527e-059d-41a3-b659-b81b7a5e4cf6 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/c3760d72-d24e-44e0-a251-bbfe897bf336 + response: + body: + string: '{"anomalyAlertingConfigurationId":"c3760d72-d24e-44e0-a251-bbfe897bf336","name":"testalertc7b92842","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"dd94796b-67c4-42be-b56b-38ec762eb5b0","anomalyScopeType":"All","negationOperation":false,"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"03ae25ef-d789-452a-aad9-d491a066073f","triggerForMissing":false}}]}' + headers: + apim-request-id: 1128caea-842c-471a-8d6d-a0b837a79173 + content-length: '424' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:35 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '63' + x-request-id: 1128caea-842c-471a-8d6d-a0b837a79173 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/c3760d72-d24e-44e0-a251-bbfe897bf336 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/c3760d72-d24e-44e0-a251-bbfe897bf336 + response: + body: + string: '' + headers: + apim-request-id: fb271234-4c49-4728-aaec-51b07e9fccc5 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:35 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: fb271234-4c49-4728-aaec-51b07e9fccc5 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/c3760d72-d24e-44e0-a251-bbfe897bf336 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/c3760d72-d24e-44e0-a251-bbfe897bf336 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: 30678f52-9dc2-41df-b6a9-0f10b99abc09"}' + headers: + apim-request-id: 2c369857-1c66-48e3-9410-d1ef417187e0 + content-length: '123' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:36 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '43' + x-request-id: 2c369857-1c66-48e3-9410-d1ef417187e0 + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/c3760d72-d24e-44e0-a251-bbfe897bf336 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/dd94796b-67c4-42be-b56b-38ec762eb5b0 + response: + body: + string: '' + headers: + apim-request-id: f7c1b875-fe50-4577-b6a9-a732c4851d2e + content-length: '0' + date: Sat, 12 Sep 2020 01:21:36 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '76' + x-request-id: f7c1b875-fe50-4577-b6a9-a732c4851d2e + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/dd94796b-67c4-42be-b56b-38ec762eb5b0 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/d9d26fc5-40da-4752-9d4e-5705bb306674 + response: + body: + string: '' + headers: + apim-request-id: cf6b81c2-5dbc-4583-b40c-7f4dea89a1a3 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:36 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '301' + x-request-id: cf6b81c2-5dbc-4583-b40c-7f4dea89a1a3 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/d9d26fc5-40da-4752-9d4e-5705bb306674 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_whole_series_alert_direction_down.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_whole_series_alert_direction_down.yaml new file mode 100644 index 000000000000..6e3c52a5ca1b --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_whole_series_alert_direction_down.yaml @@ -0,0 +1,274 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "wholeseriesc7cd284d", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 6ea5797e-d944-4689-aa24-d7395300a3f8 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:37 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/ec667284-957a-4c2c-a168-0797b4658d77 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '408' + x-request-id: 6ea5797e-d944-4689-aa24-d7395300a3f8 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/ec667284-957a-4c2c-a168-0797b4658d77 + response: + body: + string: "{\"dataFeedId\":\"ec667284-957a-4c2c-a168-0797b4658d77\",\"dataFeedName\":\"wholeseriesc7cd284d\",\"metrics\":[{\"metricId\":\"92228bd9-0003-4235-b062-05a15badc149\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"f67980c8-6a3a-46f9-8d18-fa91b9fc4836\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-12T01:21:38Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 57edb202-5b3f-4ead-8b44-f9d297edc684 + content-length: '1492' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:37 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '119' + x-request-id: 57edb202-5b3f-4ead-8b44-f9d297edc684 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/ec667284-957a-4c2c-a168-0797b4658d77 +- request: + body: '{"name": "wholeseriesc7cd284d", "description": "testing", "metricId": "92228bd9-0003-4235-b062-05a15badc149", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: 7930edd9-0886-4103-bada-932b8f157e39 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:38 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/efe7bb43-fd34-480c-aa32-35f01a5efa41 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '73' + x-request-id: 7930edd9-0886-4103-bada-932b8f157e39 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/efe7bb43-fd34-480c-aa32-35f01a5efa41 + response: + body: + string: '{"anomalyDetectionConfigurationId":"efe7bb43-fd34-480c-aa32-35f01a5efa41","name":"wholeseriesc7cd284d","description":"testing","metricId":"92228bd9-0003-4235-b062-05a15badc149","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: 66e1c540-073c-4db3-b291-a0f532e3093e + content-length: '416' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:38 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '59' + x-request-id: 66e1c540-073c-4db3-b291-a0f532e3093e + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/efe7bb43-fd34-480c-aa32-35f01a5efa41 +- request: + body: '{"name": "testalertc7cd284d", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "efe7bb43-fd34-480c-aa32-35f01a5efa41", + "anomalyScopeType": "All", "valueFilter": {"lower": 1.0, "direction": "Down", + "metricId": "92228bd9-0003-4235-b062-05a15badc149"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '286' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: f9198347-161a-4f84-b7e2-072adf0dd54b + content-length: '0' + date: Sat, 12 Sep 2020 01:21:38 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/ed59e29e-9b75-4dd4-b9b7-828d6f081fdd + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '88' + x-request-id: f9198347-161a-4f84-b7e2-072adf0dd54b + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/ed59e29e-9b75-4dd4-b9b7-828d6f081fdd + response: + body: + string: '{"anomalyAlertingConfigurationId":"ed59e29e-9b75-4dd4-b9b7-828d6f081fdd","name":"testalertc7cd284d","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"efe7bb43-fd34-480c-aa32-35f01a5efa41","anomalyScopeType":"All","negationOperation":false,"valueFilter":{"lower":1.0,"direction":"Down","metricId":"92228bd9-0003-4235-b062-05a15badc149","triggerForMissing":false}}]}' + headers: + apim-request-id: 5963cea4-2e07-4e6c-9a59-e42216a5d27e + content-length: '412' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:38 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '65' + x-request-id: 5963cea4-2e07-4e6c-9a59-e42216a5d27e + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/ed59e29e-9b75-4dd4-b9b7-828d6f081fdd +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/ed59e29e-9b75-4dd4-b9b7-828d6f081fdd + response: + body: + string: '' + headers: + apim-request-id: 7d485185-526a-43bc-95e5-89fa8f6ac793 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '80' + x-request-id: 7d485185-526a-43bc-95e5-89fa8f6ac793 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/ed59e29e-9b75-4dd4-b9b7-828d6f081fdd +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/ed59e29e-9b75-4dd4-b9b7-828d6f081fdd + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: d5cbfd2c-595d-4a82-9c23-cd95dad81295"}' + headers: + apim-request-id: 65d67856-060e-4e85-8b3b-9fd23ce3d3d5 + content-length: '123' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '45' + x-request-id: 65d67856-060e-4e85-8b3b-9fd23ce3d3d5 + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/ed59e29e-9b75-4dd4-b9b7-828d6f081fdd +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/efe7bb43-fd34-480c-aa32-35f01a5efa41 + response: + body: + string: '' + headers: + apim-request-id: 265b5b42-b91c-4739-9f89-c4a01304b5c1 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '76' + x-request-id: 265b5b42-b91c-4739-9f89-c4a01304b5c1 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/efe7bb43-fd34-480c-aa32-35f01a5efa41 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/ec667284-957a-4c2c-a168-0797b4658d77 + response: + body: + string: '' + headers: + apim-request-id: b565aaaf-34df-4de5-85cf-355a3674c51c + content-length: '0' + date: Sat, 12 Sep 2020 01:21:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '255' + x-request-id: b565aaaf-34df-4de5-85cf-355a3674c51c + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/ec667284-957a-4c2c-a168-0797b4658d77 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_whole_series_alert_direction_up.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_whole_series_alert_direction_up.yaml new file mode 100644 index 000000000000..d2409f64c37a --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_whole_series_alert_direction_up.yaml @@ -0,0 +1,274 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "wholeseries77c4277a", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 94b0ff0b-ecb0-4ceb-bb0b-b9454c904983 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:41 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/050f4a17-b4af-499c-b72c-c08b9ab1f0bf + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '331' + x-request-id: 94b0ff0b-ecb0-4ceb-bb0b-b9454c904983 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/050f4a17-b4af-499c-b72c-c08b9ab1f0bf + response: + body: + string: "{\"dataFeedId\":\"050f4a17-b4af-499c-b72c-c08b9ab1f0bf\",\"dataFeedName\":\"wholeseries77c4277a\",\"metrics\":[{\"metricId\":\"2621aaa6-27b3-4ac0-9a35-c1277257e5e3\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"4f450a58-78f4-4360-b171-15c4fb956482\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-12T01:21:41Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: fb308cb8-c1cd-4541-9b90-7c21887975a6 + content-length: '1492' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:41 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '119' + x-request-id: fb308cb8-c1cd-4541-9b90-7c21887975a6 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/050f4a17-b4af-499c-b72c-c08b9ab1f0bf +- request: + body: '{"name": "wholeseries77c4277a", "description": "testing", "metricId": "2621aaa6-27b3-4ac0-9a35-c1277257e5e3", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: 9fadafce-aa6e-43f2-b490-ec71e57ebc8e + content-length: '0' + date: Sat, 12 Sep 2020 01:21:42 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/7fc06f8b-20de-4b57-a021-020fa45b74ad + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '83' + x-request-id: 9fadafce-aa6e-43f2-b490-ec71e57ebc8e + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/7fc06f8b-20de-4b57-a021-020fa45b74ad + response: + body: + string: '{"anomalyDetectionConfigurationId":"7fc06f8b-20de-4b57-a021-020fa45b74ad","name":"wholeseries77c4277a","description":"testing","metricId":"2621aaa6-27b3-4ac0-9a35-c1277257e5e3","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: 4094b22d-4ec9-49b1-9250-d85bac3514a0 + content-length: '416' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:42 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '172' + x-request-id: 4094b22d-4ec9-49b1-9250-d85bac3514a0 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/7fc06f8b-20de-4b57-a021-020fa45b74ad +- request: + body: '{"name": "testalert77c4277a", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "7fc06f8b-20de-4b57-a021-020fa45b74ad", + "anomalyScopeType": "All", "valueFilter": {"upper": 5.0, "direction": "Up", + "metricId": "2621aaa6-27b3-4ac0-9a35-c1277257e5e3"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '284' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: 58d4b856-5b0a-4ebf-a16f-2689cd61f8fa + content-length: '0' + date: Sat, 12 Sep 2020 01:21:42 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/64322546-c371-48ef-88fa-a49060ad0100 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '83' + x-request-id: 58d4b856-5b0a-4ebf-a16f-2689cd61f8fa + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/64322546-c371-48ef-88fa-a49060ad0100 + response: + body: + string: '{"anomalyAlertingConfigurationId":"64322546-c371-48ef-88fa-a49060ad0100","name":"testalert77c4277a","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"7fc06f8b-20de-4b57-a021-020fa45b74ad","anomalyScopeType":"All","negationOperation":false,"valueFilter":{"upper":5.0,"direction":"Up","metricId":"2621aaa6-27b3-4ac0-9a35-c1277257e5e3","triggerForMissing":false}}]}' + headers: + apim-request-id: 102a492b-ce56-4e5b-8481-91f0546804f6 + content-length: '410' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:42 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '67' + x-request-id: 102a492b-ce56-4e5b-8481-91f0546804f6 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/64322546-c371-48ef-88fa-a49060ad0100 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/64322546-c371-48ef-88fa-a49060ad0100 + response: + body: + string: '' + headers: + apim-request-id: 8dfc8e74-bc21-4f83-be11-7fa04f3e37fd + content-length: '0' + date: Sat, 12 Sep 2020 01:21:43 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: 8dfc8e74-bc21-4f83-be11-7fa04f3e37fd + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/64322546-c371-48ef-88fa-a49060ad0100 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/64322546-c371-48ef-88fa-a49060ad0100 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: 2b406400-5cc1-46d5-9470-cc93cdd60eb3"}' + headers: + apim-request-id: 0559a771-db81-47d8-b5b9-97afed79a568 + content-length: '123' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:43 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '52' + x-request-id: 0559a771-db81-47d8-b5b9-97afed79a568 + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/64322546-c371-48ef-88fa-a49060ad0100 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/7fc06f8b-20de-4b57-a021-020fa45b74ad + response: + body: + string: '' + headers: + apim-request-id: 04482822-b436-42cb-a42f-1f139d0a0ab1 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:43 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '70' + x-request-id: 04482822-b436-42cb-a42f-1f139d0a0ab1 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/7fc06f8b-20de-4b57-a021-020fa45b74ad +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/050f4a17-b4af-499c-b72c-c08b9ab1f0bf + response: + body: + string: '' + headers: + apim-request-id: 5f8a6e9b-8ee0-44cd-bb2c-d72ff2f972c7 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:44 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '251' + x-request-id: 5f8a6e9b-8ee0-44cd-bb2c-d72ff2f972c7 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/050f4a17-b4af-499c-b72c-c08b9ab1f0bf +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_whole_series_severity_condition.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_whole_series_severity_condition.yaml new file mode 100644 index 000000000000..81aca0c64516 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_create_anomaly_alert_config_whole_series_severity_condition.yaml @@ -0,0 +1,273 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "topnup7a06279f", "granularityName": + "Daily", "metrics": [{"metricName": "cost"}, {"metricName": "revenue"}], "dimension": + [{"dimensionName": "category"}, {"dimensionName": "city"}], "dataStartFrom": + "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": 0, "maxConcurrency": -1, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": + {"connectionString": "connectionstring", "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '769' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: d2706673-0282-47d0-ac4f-a23edb81028d + content-length: '0' + date: Sat, 12 Sep 2020 01:21:44 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/36be8d84-4dbb-4c33-a175-b536ee30f454 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '402' + x-request-id: d2706673-0282-47d0-ac4f-a23edb81028d + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/36be8d84-4dbb-4c33-a175-b536ee30f454 + response: + body: + string: "{\"dataFeedId\":\"36be8d84-4dbb-4c33-a175-b536ee30f454\",\"dataFeedName\":\"topnup7a06279f\",\"metrics\":[{\"metricId\":\"6a7d872d-4ea9-42dd-a44f-791d7f7e324f\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"0587dcf3-6b60-4bb7-b887-9e56360f9a5c\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-12T01:21:45Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 2f41f04a-52b6-4d0e-809d-bf8359e25911 + content-length: '1487' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:45 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '140' + x-request-id: 2f41f04a-52b6-4d0e-809d-bf8359e25911 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/36be8d84-4dbb-4c33-a175-b536ee30f454 +- request: + body: '{"name": "topnup7a06279f", "description": "testing", "metricId": "6a7d872d-4ea9-42dd-a44f-791d7f7e324f", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '278' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: d48cd29b-f66a-436b-82ab-6740858ce828 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:45 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/9c6e462e-1e61-4256-97dd-2e39e7ad0eca + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '74' + x-request-id: d48cd29b-f66a-436b-82ab-6740858ce828 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/9c6e462e-1e61-4256-97dd-2e39e7ad0eca + response: + body: + string: '{"anomalyDetectionConfigurationId":"9c6e462e-1e61-4256-97dd-2e39e7ad0eca","name":"topnup7a06279f","description":"testing","metricId":"6a7d872d-4ea9-42dd-a44f-791d7f7e324f","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: 01ab5355-10fe-4aa1-8702-97feb504226b + content-length: '411' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:45 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '68' + x-request-id: 01ab5355-10fe-4aa1-8702-97feb504226b + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/9c6e462e-1e61-4256-97dd-2e39e7ad0eca +- request: + body: '{"name": "testalert7a06279f", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "9c6e462e-1e61-4256-97dd-2e39e7ad0eca", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '257' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: d962f367-7b69-4f12-b4c7-1c26ac40fc9d + content-length: '0' + date: Sat, 12 Sep 2020 01:21:45 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/a38c0665-b152-4586-8750-8c961b581855 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '89' + x-request-id: d962f367-7b69-4f12-b4c7-1c26ac40fc9d + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/a38c0665-b152-4586-8750-8c961b581855 + response: + body: + string: '{"anomalyAlertingConfigurationId":"a38c0665-b152-4586-8750-8c961b581855","name":"testalert7a06279f","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"9c6e462e-1e61-4256-97dd-2e39e7ad0eca","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: f3dd686e-7db6-4b4b-9d5b-9274dd901fbf + content-length: '359' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:46 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '62' + x-request-id: f3dd686e-7db6-4b4b-9d5b-9274dd901fbf + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/a38c0665-b152-4586-8750-8c961b581855 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/a38c0665-b152-4586-8750-8c961b581855 + response: + body: + string: '' + headers: + apim-request-id: 2fd67b7a-2ea1-46b4-9ebf-f36f8bea0e00 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:46 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '88' + x-request-id: 2fd67b7a-2ea1-46b4-9ebf-f36f8bea0e00 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/a38c0665-b152-4586-8750-8c961b581855 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/a38c0665-b152-4586-8750-8c961b581855 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: 0da9e4a7-d257-4a60-98b8-cf5d57081a73"}' + headers: + apim-request-id: a9681ecb-8054-461b-9d6f-b5db4770f890 + content-length: '123' + content-type: application/json; charset=utf-8 + date: Sat, 12 Sep 2020 01:21:46 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '45' + x-request-id: a9681ecb-8054-461b-9d6f-b5db4770f890 + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/a38c0665-b152-4586-8750-8c961b581855 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/9c6e462e-1e61-4256-97dd-2e39e7ad0eca + response: + body: + string: '' + headers: + apim-request-id: 3a975ec1-675c-4fa9-abea-0ce2c5a8cb41 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:46 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '83' + x-request-id: 3a975ec1-675c-4fa9-abea-0ce2c5a8cb41 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/9c6e462e-1e61-4256-97dd-2e39e7ad0eca +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/36be8d84-4dbb-4c33-a175-b536ee30f454 + response: + body: + string: '' + headers: + apim-request-id: 1c444d56-65cc-40b7-9bd4-2d54fbf5c9c8 + content-length: '0' + date: Sat, 12 Sep 2020 01:21:48 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '245' + x-request-id: 1c444d56-65cc-40b7-9bd4-2d54fbf5c9c8 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/36be8d84-4dbb-4c33-a175-b536ee30f454 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_list_anomaly_alert_configs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_list_anomaly_alert_configs.yaml new file mode 100644 index 000000000000..566f0ef06c80 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_list_anomaly_alert_configs.yaml @@ -0,0 +1,27 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/alert/anomaly/configurations + response: + body: + string: '{"value":[{"anomalyAlertingConfigurationId":"08318302-6006-4019-9afc-975bc63ee566","name":"test_alert_configuration","description":"updated_description","hookIds":["e880ea6b-517e-43b7-a9ea-633583096be7"],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false}]},{"anomalyAlertingConfigurationId":"ce734b14-bf83-4871-97ee-60c273938ec3","name":"test_alert_configuration","description":"testing_alert_configuration_description","hookIds":["e880ea6b-517e-43b7-a9ea-633583096be7"],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false}]},{"anomalyAlertingConfigurationId":"7b75aa62-b97d-42d4-904b-afc131714c6b","name":"test_alert_configuration","description":"testing_alert_configuration_description","crossMetricsOperator":"XOR","hookIds":["e880ea6b-517e-43b7-a9ea-633583096be7"],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false},{"anomalyDetectionConfigurationId":"bd309211-64b5-4a7a-bb81-a2789599c526","anomalyScopeType":"All","negationOperation":false}]},{"anomalyAlertingConfigurationId":"7f825107-f40c-44f7-af53-56192aa059b3","name":"test_alert_configuration","description":"updated_description","hookIds":["e880ea6b-517e-43b7-a9ea-633583096be7"],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false}]},{"anomalyAlertingConfigurationId":"7546afba-01e5-49dc-952e-af32b08e75ac","name":"test_alert_configuration","description":"testing_alert_configuration_description","crossMetricsOperator":"XOR","hookIds":["e880ea6b-517e-43b7-a9ea-633583096be7"],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false},{"anomalyDetectionConfigurationId":"bd309211-64b5-4a7a-bb81-a2789599c526","anomalyScopeType":"All","negationOperation":false}]},{"anomalyAlertingConfigurationId":"0d1dfaf4-6012-4cfd-83e3-dd020f4692be","name":"test_alert_configuration","description":"updated_description","hookIds":["e880ea6b-517e-43b7-a9ea-633583096be7"],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false}]},{"anomalyAlertingConfigurationId":"ff3014a0-bbbb-41ec-a637-677e77b81299","name":"test_alert_setting","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Medium","maxAlertSeverity":"High"},"snoozeFilter":{"autoSnooze":0,"snoozeScope":"Series","onlyForSuccessive":true}}]},{"anomalyAlertingConfigurationId":"00674295-7529-42f2-b91c-942a36e69370","name":"test_alert_configuration","description":"testing_alert_configuration_description","hookIds":["e880ea6b-517e-43b7-a9ea-633583096be7"],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"snoozeFilter":{"autoSnooze":0,"snoozeScope":"Series","onlyForSuccessive":true}}]}]}' + headers: + apim-request-id: fb62f34d-7fac-48ce-bc01-3488a270c84d + content-length: '3473' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 01:48:30 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '5328' + x-request-id: fb62f34d-7fac-48ce-bc01-3488a270c84d + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c0f2539f-b804-4ab9-a70f-0da0c89c76d8/alert/anomaly/configurations +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_update_anomaly_alert_by_resetting_properties.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_update_anomaly_alert_by_resetting_properties.yaml new file mode 100644 index 000000000000..cce248cb9ab9 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_update_anomaly_alert_by_resetting_properties.yaml @@ -0,0 +1,261 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "alertupdate58f2218b", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: dfa0dfd7-e14b-4108-96ff-0583113cc07c + content-length: '0' + date: Mon, 21 Sep 2020 23:34:58 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/5ffb8b3d-b524-480e-b437-8bae591b8483 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '558' + x-request-id: dfa0dfd7-e14b-4108-96ff-0583113cc07c + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/5ffb8b3d-b524-480e-b437-8bae591b8483 + response: + body: + string: "{\"dataFeedId\":\"5ffb8b3d-b524-480e-b437-8bae591b8483\",\"dataFeedName\":\"alertupdate58f2218b\",\"metrics\":[{\"metricId\":\"7dc8ed4e-f6c5-4652-aa36-262751c0b75d\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"5ea2f1e7-14f9-44f9-ad8a-ca46f8b6ee04\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T23:34:58Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: a9e3f486-daea-4cf0-93a2-bdcd9c334490 + content-length: '1492' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:08 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '10207' + x-request-id: a9e3f486-daea-4cf0-93a2-bdcd9c334490 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/5ffb8b3d-b524-480e-b437-8bae591b8483 +- request: + body: '{"name": "alertupdate58f2218b", "description": "testing", "metricId": "7dc8ed4e-f6c5-4652-aa36-262751c0b75d", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: ee16315b-af9a-4866-a9f6-40fe60d68175 + content-length: '0' + date: Mon, 21 Sep 2020 23:35:08 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/b3586869-72a2-4e86-81f7-1072e9077513 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '150' + x-request-id: ee16315b-af9a-4866-a9f6-40fe60d68175 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/b3586869-72a2-4e86-81f7-1072e9077513 + response: + body: + string: '{"anomalyDetectionConfigurationId":"b3586869-72a2-4e86-81f7-1072e9077513","name":"alertupdate58f2218b","description":"testing","metricId":"7dc8ed4e-f6c5-4652-aa36-262751c0b75d","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: e61b251b-cdf7-46d9-8a09-26013df1659c + content-length: '416' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:08 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '80' + x-request-id: e61b251b-cdf7-46d9-8a09-26013df1659c + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/b3586869-72a2-4e86-81f7-1072e9077513 +- request: + body: '{"name": "alertupdate58f2218b", "crossMetricsOperator": "AND", "hookIds": + [], "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": "b3586869-72a2-4e86-81f7-1072e9077513", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", "metricId": + "7dc8ed4e-f6c5-4652-aa36-262751c0b75d"}}, {"anomalyDetectionConfigurationId": + "b3586869-72a2-4e86-81f7-1072e9077513", "anomalyScopeType": "Dimension", "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}}, {"anomalyDetectionConfigurationId": "b3586869-72a2-4e86-81f7-1072e9077513", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '824' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: 0e0fe07f-7b77-4686-aae2-198d99d9ddbc + content-length: '0' + date: Mon, 21 Sep 2020 23:35:09 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/8547e0ba-d965-4258-b078-6ae0cf38f0c0 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '170' + x-request-id: 0e0fe07f-7b77-4686-aae2-198d99d9ddbc + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/8547e0ba-d965-4258-b078-6ae0cf38f0c0 + response: + body: + string: '{"anomalyAlertingConfigurationId":"8547e0ba-d965-4258-b078-6ae0cf38f0c0","name":"alertupdate58f2218b","description":"","crossMetricsOperator":"AND","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"b3586869-72a2-4e86-81f7-1072e9077513","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"7dc8ed4e-f6c5-4652-aa36-262751c0b75d","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"b3586869-72a2-4e86-81f7-1072e9077513","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}},{"anomalyDetectionConfigurationId":"b3586869-72a2-4e86-81f7-1072e9077513","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: 1853ee8c-1b76-4de4-a909-dfb3d004f776 + content-length: '969' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:09 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '74' + x-request-id: 1853ee8c-1b76-4de4-a909-dfb3d004f776 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/8547e0ba-d965-4258-b078-6ae0cf38f0c0 +- request: + body: '{"name": "reset", "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": + "b3586869-72a2-4e86-81f7-1072e9077513", "anomalyScopeType": "TopN", "topNAnomalyScope": + {"top": 5, "period": 10, "minTopCount": 9}}], "description": ""}' + headers: + Accept: + - application/json + Content-Length: + - '239' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/8547e0ba-d965-4258-b078-6ae0cf38f0c0 + response: + body: + string: '' + headers: + apim-request-id: 15f55b13-7b2d-4fce-9f21-7f3c4b6aa227 + content-length: '0' + date: Mon, 21 Sep 2020 23:35:09 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '105' + x-request-id: 15f55b13-7b2d-4fce-9f21-7f3c4b6aa227 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/8547e0ba-d965-4258-b078-6ae0cf38f0c0 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/8547e0ba-d965-4258-b078-6ae0cf38f0c0 + response: + body: + string: '{"anomalyAlertingConfigurationId":"8547e0ba-d965-4258-b078-6ae0cf38f0c0","name":"reset","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"b3586869-72a2-4e86-81f7-1072e9077513","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9}}]}' + headers: + apim-request-id: 61ece046-c962-4bc3-8912-d03d34c30b50 + content-length: '335' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:09 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '74' + x-request-id: 61ece046-c962-4bc3-8912-d03d34c30b50 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/8547e0ba-d965-4258-b078-6ae0cf38f0c0 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/5ffb8b3d-b524-480e-b437-8bae591b8483 + response: + body: + string: '' + headers: + apim-request-id: f83731c6-ed97-45b2-9526-d1b397a0c9fc + content-length: '0' + date: Mon, 21 Sep 2020 23:35:11 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '275' + x-request-id: f83731c6-ed97-45b2-9526-d1b397a0c9fc + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/5ffb8b3d-b524-480e-b437-8bae591b8483 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_update_anomaly_alert_config_with_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_update_anomaly_alert_config_with_kwargs.yaml new file mode 100644 index 000000000000..4d452cfb8b16 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_update_anomaly_alert_config_with_kwargs.yaml @@ -0,0 +1,272 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "alertupdateb43f1f4f", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 43adc356-68ac-4ebe-891c-f6016a43b809 + content-length: '0' + date: Mon, 21 Sep 2020 23:35:11 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/2e9acdf2-abf5-4cc5-bb02-88378d530f33 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '419' + x-request-id: 43adc356-68ac-4ebe-891c-f6016a43b809 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/2e9acdf2-abf5-4cc5-bb02-88378d530f33 + response: + body: + string: "{\"dataFeedId\":\"2e9acdf2-abf5-4cc5-bb02-88378d530f33\",\"dataFeedName\":\"alertupdateb43f1f4f\",\"metrics\":[{\"metricId\":\"74272baa-0610-4e7f-890a-3c338d03cbcf\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"fefa052a-9949-4c20-a408-ff09923935cb\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T23:35:12Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 4de77ff8-c4f0-45de-8744-443a68f6f6ac + content-length: '1492' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:12 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '128' + x-request-id: 4de77ff8-c4f0-45de-8744-443a68f6f6ac + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/2e9acdf2-abf5-4cc5-bb02-88378d530f33 +- request: + body: '{"name": "alertupdateb43f1f4f", "description": "testing", "metricId": "74272baa-0610-4e7f-890a-3c338d03cbcf", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: 202885cf-3c4b-41b7-8ec0-3c7c94456407 + content-length: '0' + date: Mon, 21 Sep 2020 23:35:12 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/92964682-969c-42d3-9745-478b91795a6c + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '82' + x-request-id: 202885cf-3c4b-41b7-8ec0-3c7c94456407 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/92964682-969c-42d3-9745-478b91795a6c + response: + body: + string: '{"anomalyDetectionConfigurationId":"92964682-969c-42d3-9745-478b91795a6c","name":"alertupdateb43f1f4f","description":"testing","metricId":"74272baa-0610-4e7f-890a-3c338d03cbcf","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: 672e68d1-22ef-45d5-bf48-fc98330aa6f6 + content-length: '416' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:12 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '69' + x-request-id: 672e68d1-22ef-45d5-bf48-fc98330aa6f6 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/92964682-969c-42d3-9745-478b91795a6c +- request: + body: '{"name": "alertupdateb43f1f4f", "crossMetricsOperator": "AND", "hookIds": + [], "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": "92964682-969c-42d3-9745-478b91795a6c", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", "metricId": + "74272baa-0610-4e7f-890a-3c338d03cbcf"}}, {"anomalyDetectionConfigurationId": + "92964682-969c-42d3-9745-478b91795a6c", "anomalyScopeType": "Dimension", "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}}, {"anomalyDetectionConfigurationId": "92964682-969c-42d3-9745-478b91795a6c", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '824' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: 5d5ce592-3db9-43e3-8c06-57d4b9f0f066 + content-length: '0' + date: Mon, 21 Sep 2020 23:35:13 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/5646d49d-b1b7-4fbe-a170-a9a751760786 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '391' + x-request-id: 5d5ce592-3db9-43e3-8c06-57d4b9f0f066 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/5646d49d-b1b7-4fbe-a170-a9a751760786 + response: + body: + string: '{"anomalyAlertingConfigurationId":"5646d49d-b1b7-4fbe-a170-a9a751760786","name":"alertupdateb43f1f4f","description":"","crossMetricsOperator":"AND","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"92964682-969c-42d3-9745-478b91795a6c","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"74272baa-0610-4e7f-890a-3c338d03cbcf","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"92964682-969c-42d3-9745-478b91795a6c","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}},{"anomalyDetectionConfigurationId":"92964682-969c-42d3-9745-478b91795a6c","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: d00982e0-a8c3-42f6-bbd8-037c1982986e + content-length: '969' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:13 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '71' + x-request-id: d00982e0-a8c3-42f6-bbd8-037c1982986e + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/5646d49d-b1b7-4fbe-a170-a9a751760786 +- request: + body: '{"name": "update", "crossMetricsOperator": "OR", "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "92964682-969c-42d3-9745-478b91795a6c", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": "High"}, + "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", "metricId": + "74272baa-0610-4e7f-890a-3c338d03cbcf"}}, {"anomalyDetectionConfigurationId": + "92964682-969c-42d3-9745-478b91795a6c", "anomalyScopeType": "Dimension", "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}, "valueFilter": {"lower": 1.0, "upper": 5.0, + "direction": "Both"}}, {"anomalyDetectionConfigurationId": "92964682-969c-42d3-9745-478b91795a6c", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both"}}], + "description": "update description"}' + headers: + Accept: + - application/json + Content-Length: + - '1039' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/5646d49d-b1b7-4fbe-a170-a9a751760786 + response: + body: + string: '' + headers: + apim-request-id: 11df1a9b-238a-4bfd-97da-060977d57003 + content-length: '0' + date: Mon, 21 Sep 2020 23:35:13 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '183' + x-request-id: 11df1a9b-238a-4bfd-97da-060977d57003 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/5646d49d-b1b7-4fbe-a170-a9a751760786 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/5646d49d-b1b7-4fbe-a170-a9a751760786 + response: + body: + string: '{"anomalyAlertingConfigurationId":"5646d49d-b1b7-4fbe-a170-a9a751760786","name":"update","description":"update + description","crossMetricsOperator":"OR","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"92964682-969c-42d3-9745-478b91795a6c","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"74272baa-0610-4e7f-890a-3c338d03cbcf","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"92964682-969c-42d3-9745-478b91795a6c","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"92964682-969c-42d3-9745-478b91795a6c","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","triggerForMissing":false}}]}' + headers: + apim-request-id: c2d3d1df-5b1f-43b0-9e0a-b25a6fa18838 + content-length: '1213' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:13 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '81' + x-request-id: c2d3d1df-5b1f-43b0-9e0a-b25a6fa18838 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/5646d49d-b1b7-4fbe-a170-a9a751760786 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/2e9acdf2-abf5-4cc5-bb02-88378d530f33 + response: + body: + string: '' + headers: + apim-request-id: 5426692f-6d23-48e6-a780-7619abef74a5 + content-length: '0' + date: Mon, 21 Sep 2020 23:35:14 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '281' + x-request-id: 5426692f-6d23-48e6-a780-7619abef74a5 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/2e9acdf2-abf5-4cc5-bb02-88378d530f33 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_update_anomaly_alert_config_with_model.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_update_anomaly_alert_config_with_model.yaml new file mode 100644 index 000000000000..8d897282822c --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_update_anomaly_alert_config_with_model.yaml @@ -0,0 +1,273 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "alertupdate94ce1ed1", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 9a55dbdf-263a-412e-a084-896151ea2a33 + content-length: '0' + date: Mon, 21 Sep 2020 23:35:16 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/23ca51af-7053-4a39-871d-fde184348122 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '364' + x-request-id: 9a55dbdf-263a-412e-a084-896151ea2a33 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/23ca51af-7053-4a39-871d-fde184348122 + response: + body: + string: "{\"dataFeedId\":\"23ca51af-7053-4a39-871d-fde184348122\",\"dataFeedName\":\"alertupdate94ce1ed1\",\"metrics\":[{\"metricId\":\"67a2c3f6-9ec9-4b8c-9d1a-952b3fc18cd3\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"dc5c7554-19fc-4764-953f-a52cf06669dd\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T23:35:16Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 94abe4cb-83ce-4fdf-b731-f07a4d2a4b30 + content-length: '1492' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:16 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '135' + x-request-id: 94abe4cb-83ce-4fdf-b731-f07a4d2a4b30 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/23ca51af-7053-4a39-871d-fde184348122 +- request: + body: '{"name": "alertupdate94ce1ed1", "description": "testing", "metricId": "67a2c3f6-9ec9-4b8c-9d1a-952b3fc18cd3", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: 0e6e3bf4-b2af-4a71-845e-401a9d9820b7 + content-length: '0' + date: Mon, 21 Sep 2020 23:35:16 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/a723a88e-56a8-48d3-b65f-32956e72d9b1 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '94' + x-request-id: 0e6e3bf4-b2af-4a71-845e-401a9d9820b7 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/a723a88e-56a8-48d3-b65f-32956e72d9b1 + response: + body: + string: '{"anomalyDetectionConfigurationId":"a723a88e-56a8-48d3-b65f-32956e72d9b1","name":"alertupdate94ce1ed1","description":"testing","metricId":"67a2c3f6-9ec9-4b8c-9d1a-952b3fc18cd3","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: 6d76ea81-b599-41be-b277-21439fd47953 + content-length: '416' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:16 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '70' + x-request-id: 6d76ea81-b599-41be-b277-21439fd47953 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/a723a88e-56a8-48d3-b65f-32956e72d9b1 +- request: + body: '{"name": "alertupdate94ce1ed1", "crossMetricsOperator": "AND", "hookIds": + [], "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": "a723a88e-56a8-48d3-b65f-32956e72d9b1", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", "metricId": + "67a2c3f6-9ec9-4b8c-9d1a-952b3fc18cd3"}}, {"anomalyDetectionConfigurationId": + "a723a88e-56a8-48d3-b65f-32956e72d9b1", "anomalyScopeType": "Dimension", "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}}, {"anomalyDetectionConfigurationId": "a723a88e-56a8-48d3-b65f-32956e72d9b1", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '824' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: 1d91d412-39bb-4698-9911-34460a3377fc + content-length: '0' + date: Mon, 21 Sep 2020 23:35:17 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/e6d3216a-4d3d-4c55-a757-7132691c0ee0 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '165' + x-request-id: 1d91d412-39bb-4698-9911-34460a3377fc + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/e6d3216a-4d3d-4c55-a757-7132691c0ee0 + response: + body: + string: '{"anomalyAlertingConfigurationId":"e6d3216a-4d3d-4c55-a757-7132691c0ee0","name":"alertupdate94ce1ed1","description":"","crossMetricsOperator":"AND","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"a723a88e-56a8-48d3-b65f-32956e72d9b1","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"67a2c3f6-9ec9-4b8c-9d1a-952b3fc18cd3","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"a723a88e-56a8-48d3-b65f-32956e72d9b1","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}},{"anomalyDetectionConfigurationId":"a723a88e-56a8-48d3-b65f-32956e72d9b1","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: 01d5411c-75f8-4b39-916c-7e93064955bc + content-length: '969' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:17 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '88' + x-request-id: 01d5411c-75f8-4b39-916c-7e93064955bc + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/e6d3216a-4d3d-4c55-a757-7132691c0ee0 +- request: + body: '{"name": "update", "description": "update description", "crossMetricsOperator": + "OR", "hookIds": [], "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": + "a723a88e-56a8-48d3-b65f-32956e72d9b1", "anomalyScopeType": "TopN", "negationOperation": + false, "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": 9}, "severityFilter": + {"minAlertSeverity": "Low", "maxAlertSeverity": "High"}, "valueFilter": {"lower": + 1.0, "upper": 5.0, "direction": "Both", "metricId": "67a2c3f6-9ec9-4b8c-9d1a-952b3fc18cd3", + "triggerForMissing": false}}, {"anomalyDetectionConfigurationId": "a723a88e-56a8-48d3-b65f-32956e72d9b1", + "anomalyScopeType": "Dimension", "negationOperation": false, "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}, "valueFilter": {"lower": 1.0, "upper": 5.0, + "direction": "Both"}}, {"anomalyDetectionConfigurationId": "a723a88e-56a8-48d3-b65f-32956e72d9b1", + "anomalyScopeType": "All", "negationOperation": false, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}, "valueFilter": {"lower": 1.0, "upper": 5.0, + "direction": "Both"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '1166' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/e6d3216a-4d3d-4c55-a757-7132691c0ee0 + response: + body: + string: '' + headers: + apim-request-id: a2294480-f7b9-48c9-9406-555a106606e1 + content-length: '0' + date: Mon, 21 Sep 2020 23:35:17 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '224' + x-request-id: a2294480-f7b9-48c9-9406-555a106606e1 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/e6d3216a-4d3d-4c55-a757-7132691c0ee0 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/e6d3216a-4d3d-4c55-a757-7132691c0ee0 + response: + body: + string: '{"anomalyAlertingConfigurationId":"e6d3216a-4d3d-4c55-a757-7132691c0ee0","name":"update","description":"update + description","crossMetricsOperator":"OR","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"a723a88e-56a8-48d3-b65f-32956e72d9b1","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"67a2c3f6-9ec9-4b8c-9d1a-952b3fc18cd3","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"a723a88e-56a8-48d3-b65f-32956e72d9b1","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"a723a88e-56a8-48d3-b65f-32956e72d9b1","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","triggerForMissing":false}}]}' + headers: + apim-request-id: ce3c8710-d0ec-4115-8e10-b501406fddc9 + content-length: '1213' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:18 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '73' + x-request-id: ce3c8710-d0ec-4115-8e10-b501406fddc9 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/e6d3216a-4d3d-4c55-a757-7132691c0ee0 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/23ca51af-7053-4a39-871d-fde184348122 + response: + body: + string: '' + headers: + apim-request-id: dee41b54-d57e-43f8-848c-2b046d71c286 + content-length: '0' + date: Mon, 21 Sep 2020 23:35:18 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '287' + x-request-id: dee41b54-d57e-43f8-848c-2b046d71c286 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/23ca51af-7053-4a39-871d-fde184348122 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_update_anomaly_alert_config_with_model_and_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_update_anomaly_alert_config_with_model_and_kwargs.yaml new file mode 100644 index 000000000000..c54cdcb1d8ff --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_anomaly_alert_config_async.test_update_anomaly_alert_config_with_model_and_kwargs.yaml @@ -0,0 +1,270 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "alertupdate24d2351", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '773' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: cacaf39c-924f-4390-97d7-d28cce18db8e + content-length: '0' + date: Mon, 21 Sep 2020 23:35:19 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/d520ecff-5f61-4ecd-87ca-7ccfea35636c + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '337' + x-request-id: cacaf39c-924f-4390-97d7-d28cce18db8e + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/d520ecff-5f61-4ecd-87ca-7ccfea35636c + response: + body: + string: "{\"dataFeedId\":\"d520ecff-5f61-4ecd-87ca-7ccfea35636c\",\"dataFeedName\":\"alertupdate24d2351\",\"metrics\":[{\"metricId\":\"833bedff-9116-46e5-be6e-081309e01a6e\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"3c707966-03ba-4343-9e29-859e28e2f42d\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T23:35:20Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 6d8d5924-ad88-4586-8bf8-20ca049ee0bc + content-length: '1491' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:19 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '126' + x-request-id: 6d8d5924-ad88-4586-8bf8-20ca049ee0bc + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/d520ecff-5f61-4ecd-87ca-7ccfea35636c +- request: + body: '{"name": "alertupdate24d2351", "description": "testing", "metricId": "833bedff-9116-46e5-be6e-081309e01a6e", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Content-Length: + - '282' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: 1766354c-9b37-466c-8b44-b1bc406587da + content-length: '0' + date: Mon, 21 Sep 2020 23:35:20 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/f473aacd-ac18-4d99-a81d-478b8753e217 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '87' + x-request-id: 1766354c-9b37-466c-8b44-b1bc406587da + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/f473aacd-ac18-4d99-a81d-478b8753e217 + response: + body: + string: '{"anomalyDetectionConfigurationId":"f473aacd-ac18-4d99-a81d-478b8753e217","name":"alertupdate24d2351","description":"testing","metricId":"833bedff-9116-46e5-be6e-081309e01a6e","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: d9c0b953-59a6-415e-8ecd-80cc961c122d + content-length: '415' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:20 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '69' + x-request-id: d9c0b953-59a6-415e-8ecd-80cc961c122d + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/f473aacd-ac18-4d99-a81d-478b8753e217 +- request: + body: '{"name": "alertupdate24d2351", "crossMetricsOperator": "AND", "hookIds": + [], "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": "f473aacd-ac18-4d99-a81d-478b8753e217", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", "metricId": + "833bedff-9116-46e5-be6e-081309e01a6e"}}, {"anomalyDetectionConfigurationId": + "f473aacd-ac18-4d99-a81d-478b8753e217", "anomalyScopeType": "Dimension", "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}}, {"anomalyDetectionConfigurationId": "f473aacd-ac18-4d99-a81d-478b8753e217", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '823' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: 33c754b9-b9a9-43a8-a711-4fb84837d124 + content-length: '0' + date: Mon, 21 Sep 2020 23:35:20 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/0590df1a-efc6-42f3-bc88-43817bafd01f + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '173' + x-request-id: 33c754b9-b9a9-43a8-a711-4fb84837d124 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/0590df1a-efc6-42f3-bc88-43817bafd01f + response: + body: + string: '{"anomalyAlertingConfigurationId":"0590df1a-efc6-42f3-bc88-43817bafd01f","name":"alertupdate24d2351","description":"","crossMetricsOperator":"AND","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"f473aacd-ac18-4d99-a81d-478b8753e217","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"833bedff-9116-46e5-be6e-081309e01a6e","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"f473aacd-ac18-4d99-a81d-478b8753e217","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}},{"anomalyDetectionConfigurationId":"f473aacd-ac18-4d99-a81d-478b8753e217","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: 8af4af48-5e91-49b3-b0e8-08e077fdfff3 + content-length: '968' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:21 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '71' + x-request-id: 8af4af48-5e91-49b3-b0e8-08e077fdfff3 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/0590df1a-efc6-42f3-bc88-43817bafd01f +- request: + body: '{"name": "updateMe", "description": "updateMe", "crossMetricsOperator": + "OR", "hookIds": [], "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": + "f473aacd-ac18-4d99-a81d-478b8753e217", "anomalyScopeType": "TopN", "topNAnomalyScope": + {"top": 5, "period": 10, "minTopCount": 9}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}, "valueFilter": {"lower": 1.0, "upper": 5.0, + "direction": "Both", "metricId": "833bedff-9116-46e5-be6e-081309e01a6e"}}, {"anomalyDetectionConfigurationId": + "f473aacd-ac18-4d99-a81d-478b8753e217", "anomalyScopeType": "Dimension", "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}, "valueFilter": {"lower": 1.0, "upper": 5.0, + "direction": "Both"}}, {"anomalyDetectionConfigurationId": "f473aacd-ac18-4d99-a81d-478b8753e217", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '1046' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/0590df1a-efc6-42f3-bc88-43817bafd01f + response: + body: + string: '' + headers: + apim-request-id: 7acd4080-a5eb-4de6-9a66-8516b6d1a356 + content-length: '0' + date: Mon, 21 Sep 2020 23:35:21 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '188' + x-request-id: 7acd4080-a5eb-4de6-9a66-8516b6d1a356 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/0590df1a-efc6-42f3-bc88-43817bafd01f +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/0590df1a-efc6-42f3-bc88-43817bafd01f + response: + body: + string: '{"anomalyAlertingConfigurationId":"0590df1a-efc6-42f3-bc88-43817bafd01f","name":"updateMe","description":"updateMe","crossMetricsOperator":"OR","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"f473aacd-ac18-4d99-a81d-478b8753e217","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"833bedff-9116-46e5-be6e-081309e01a6e","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"f473aacd-ac18-4d99-a81d-478b8753e217","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"f473aacd-ac18-4d99-a81d-478b8753e217","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","triggerForMissing":false}}]}' + headers: + apim-request-id: fe14a2ab-1228-4848-a756-eee31a442ef9 + content-length: '1205' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:35:21 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '67' + x-request-id: fe14a2ab-1228-4848-a756-eee31a442ef9 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/alert/anomaly/configurations/0590df1a-efc6-42f3-bc88-43817bafd01f +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/d520ecff-5f61-4ecd-87ca-7ccfea35636c + response: + body: + string: '' + headers: + apim-request-id: 8d814b8e-515e-48f6-813e-d0d3d426d351 + content-length: '0' + date: Mon, 21 Sep 2020 23:35:23 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '268' + x-request-id: 8d814b8e-515e-48f6-813e-d0d3d426d351 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/d520ecff-5f61-4ecd-87ca-7ccfea35636c +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feed_ingestion_async.test_get_data_feed_ingestion_progress.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feed_ingestion_async.test_get_data_feed_ingestion_progress.yaml new file mode 100644 index 000000000000..ca493261f1e6 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feed_ingestion_async.test_get_data_feed_ingestion_progress.yaml @@ -0,0 +1,27 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/data_feed_id/ingestionProgress + response: + body: + string: '{"latestSuccessTimestamp":"2020-01-26T00:00:00Z","latestActiveTimestamp":"2020-02-01T00:00:00Z"}' + headers: + apim-request-id: e3e15f44-cbb2-465e-8907-d015618f8cdc + content-length: '96' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 01:48:52 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '5527' + x-request-id: e3e15f44-cbb2-465e-8907-d015618f8cdc + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/4957a2f7-a0f4-4fc0-b8d7-d866c1df0f4c/ingestionProgress +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feed_ingestion_async.test_list_data_feed_ingestion_status.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feed_ingestion_async.test_list_data_feed_ingestion_status.yaml new file mode 100644 index 000000000000..4bfe42e01729 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feed_ingestion_async.test_list_data_feed_ingestion_status.yaml @@ -0,0 +1,31 @@ +interactions: +- request: + body: '{"startTime": "2020-08-09T00:00:00.000Z", "endTime": "2020-09-16T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/data_feed_id/ingestionStatus/query + response: + body: + string: '{"value":[{"timestamp":"2020-09-15T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-14T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-13T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-12T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-11T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-10T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-09T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-08T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-07T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-06T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-05T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-04T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-03T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-02T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-01T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-31T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-30T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-29T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-28T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-27T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-26T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-25T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-24T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-23T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-22T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-21T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-20T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-19T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-18T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-17T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-16T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-15T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-14T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-13T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-12T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-11T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-10T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-09T00:00:00Z","status":"NotStarted","message":""}],"@nextLink":null}' + headers: + apim-request-id: b19aef08-cac5-404e-8ded-97adac6a9340 + content-length: '2764' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 01:48:53 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '625' + x-request-id: b19aef08-cac5-404e-8ded-97adac6a9340 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/4957a2f7-a0f4-4fc0-b8d7-d866c1df0f4c/ingestionStatus/query +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feed_ingestion_async.test_list_data_feed_ingestion_status_with_skip.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feed_ingestion_async.test_list_data_feed_ingestion_status_with_skip.yaml new file mode 100644 index 000000000000..7144d2f76f6a --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feed_ingestion_async.test_list_data_feed_ingestion_status_with_skip.yaml @@ -0,0 +1,60 @@ +interactions: +- request: + body: '{"startTime": "2020-08-09T00:00:00.000Z", "endTime": "2020-09-16T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/data_feed_id/ingestionStatus/query + response: + body: + string: '{"value":[{"timestamp":"2020-09-15T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-14T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-13T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-12T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-11T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-10T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-09T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-08T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-07T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-06T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-05T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-04T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-03T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-02T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-01T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-31T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-30T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-29T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-28T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-27T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-26T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-25T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-24T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-23T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-22T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-21T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-20T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-19T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-18T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-17T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-16T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-15T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-14T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-13T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-12T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-11T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-10T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-09T00:00:00Z","status":"NotStarted","message":""}],"@nextLink":null}' + headers: + apim-request-id: 22429294-b9c1-4362-b400-46f87c2f27ce + content-length: '2764' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 01:48:54 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '626' + x-request-id: 22429294-b9c1-4362-b400-46f87c2f27ce + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/4957a2f7-a0f4-4fc0-b8d7-d866c1df0f4c/ingestionStatus/query +- request: + body: '{"startTime": "2020-08-09T00:00:00.000Z", "endTime": "2020-09-16T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/data_feed_id/ingestionStatus/query?$skip=5 + response: + body: + string: '{"value":[{"timestamp":"2020-09-10T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-09T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-08T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-07T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-06T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-05T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-04T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-03T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-02T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-09-01T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-31T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-30T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-29T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-28T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-27T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-26T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-25T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-24T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-23T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-22T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-21T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-20T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-19T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-18T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-17T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-16T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-15T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-14T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-13T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-12T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-11T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-10T00:00:00Z","status":"NotStarted","message":""},{"timestamp":"2020-08-09T00:00:00Z","status":"NotStarted","message":""}],"@nextLink":null}' + headers: + apim-request-id: a1c7311c-bfb3-42b5-af05-4ed82db4578d + content-length: '2404' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 01:48:55 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '609' + x-request-id: a1c7311c-bfb3-42b5-af05-4ed82db4578d + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/4957a2f7-a0f4-4fc0-b8d7-d866c1df0f4c/ingestionStatus/query?$skip=5 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feed_ingestion_async.test_refresh_data_feed_ingestion.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feed_ingestion_async.test_refresh_data_feed_ingestion.yaml new file mode 100644 index 000000000000..76142405feac --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feed_ingestion_async.test_refresh_data_feed_ingestion.yaml @@ -0,0 +1,30 @@ +interactions: +- request: + body: '{"startTime": "2019-10-01T00:00:00.000Z", "endTime": "2020-10-03T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/data_feed_id/ingestionProgress/reset + response: + body: + string: '' + headers: + apim-request-id: 75ce7f07-096d-46cb-bd3d-f008d17be033 + content-length: '0' + date: Tue, 22 Sep 2020 01:48:57 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '1024' + x-request-id: 75ce7f07-096d-46cb-bd3d-f008d17be033 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/4957a2f7-a0f4-4fc0-b8d7-d866c1df0f4c/ingestionProgress/reset +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_from_sql_server.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_from_sql_server.yaml new file mode 100644 index 000000000000..490d872f9e7f --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_from_sql_server.yaml @@ -0,0 +1,123 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "testfeedasyncce82373", + "dataFeedDescription": "my first data feed", "granularityName": "Daily", "metrics": + [{"metricName": "cost", "metricDisplayName": "display cost", "metricDescription": + "the cost"}, {"metricName": "revenue", "metricDisplayName": "display revenue", + "metricDescription": "the revenue"}], "dimension": [{"dimensionName": "category", + "dimensionDisplayName": "display category"}, {"dimensionName": "city", "dimensionDisplayName": + "display city"}], "timestampColumn": "Timestamp", "dataStartFrom": "2019-10-01T00:00:00.000Z", + "startOffsetInSeconds": -1, "maxConcurrency": 0, "minRetryIntervalInSeconds": + -1, "stopRetryAfterInSeconds": -1, "needRollup": "NoRollup", "rollUpMethod": + "None", "fillMissingPointType": "SmartFilling", "viewMode": "Private", "admins": + ["yournamehere@microsoft.com"], "viewers": ["viewers"], "actionLinkTemplate": + "action link template", "dataSourceParameter": {"connectionString": "connectionstring", + "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '1308' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: aaa67d13-15f1-4bfc-92e4-90e06bbf41b9 + content-length: '0' + date: Wed, 09 Sep 2020 22:36:39 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/77e536a2-8703-46bc-a1a0-2b394e3ccd71 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '392' + x-request-id: aaa67d13-15f1-4bfc-92e4-90e06bbf41b9 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/77e536a2-8703-46bc-a1a0-2b394e3ccd71 + response: + body: + string: "{\"dataFeedId\":\"77e536a2-8703-46bc-a1a0-2b394e3ccd71\",\"dataFeedName\":\"testfeedasyncce82373\",\"metrics\":[{\"metricId\":\"4c40feaa-8c30-4812-9297-0a9e2b9e45d9\",\"metricName\":\"cost\",\"metricDisplayName\":\"display + cost\",\"metricDescription\":\"the cost\"},{\"metricId\":\"c2dd17e0-0268-4259-9ff9-826506fa2a2c\",\"metricName\":\"revenue\",\"metricDisplayName\":\"display + revenue\",\"metricDescription\":\"the revenue\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"display + category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"display + city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"Timestamp\",\"startOffsetInSeconds\":-1,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"SmartFilling\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"my + first data feed\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":0,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\",\"yournamehere@microsoft.com\"],\"viewers\":[\"viewers\"],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-09T22:36:39Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"action + link template\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: ea5d7537-c028-499b-944a-f3a4f7bf0a90 + content-length: '1629' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:36:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '127' + x-request-id: ea5d7537-c028-499b-944a-f3a4f7bf0a90 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/77e536a2-8703-46bc-a1a0-2b394e3ccd71 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/77e536a2-8703-46bc-a1a0-2b394e3ccd71 + response: + body: + string: '' + headers: + apim-request-id: 22fdd5f7-d52a-4309-8271-21ded01467c8 + content-length: '0' + date: Wed, 09 Sep 2020 22:36:40 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '259' + x-request-id: 22fdd5f7-d52a-4309-8271-21ded01467c8 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/77e536a2-8703-46bc-a1a0-2b394e3ccd71 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/77e536a2-8703-46bc-a1a0-2b394e3ccd71 + response: + body: + string: '{"code":"ERROR_INVALID_PARAMETER","message":"datafeedId is invalid."}' + headers: + apim-request-id: ad543730-af91-4f4e-aa50-1662aaa67c93 + content-length: '69' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:36:40 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '58' + x-request-id: ad543730-af91-4f4e-aa50-1662aaa67c93 + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/77e536a2-8703-46bc-a1a0-2b394e3ccd71 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_from_sql_server_with_custom_values.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_from_sql_server_with_custom_values.yaml new file mode 100644 index 000000000000..a9d22b01d1c9 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_from_sql_server_with_custom_values.yaml @@ -0,0 +1,124 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "testfeedasyncfe562b77", + "dataFeedDescription": "my first data feed", "granularityName": "Custom", "granularityAmount": + 20, "metrics": [{"metricName": "cost", "metricDisplayName": "display cost", + "metricDescription": "the cost"}, {"metricName": "revenue", "metricDisplayName": + "display revenue", "metricDescription": "the revenue"}], "dimension": [{"dimensionName": + "category", "dimensionDisplayName": "display category"}, {"dimensionName": "city", + "dimensionDisplayName": "display city"}], "timestampColumn": "Timestamp", "dataStartFrom": + "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": -1, "maxConcurrency": 0, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "needRollup": + "AlreadyRollup", "rollUpMethod": "Sum", "allUpIdentification": "sumrollup", + "fillMissingPointType": "CustomValue", "fillMissingPointValue": 10.0, "viewMode": + "Private", "admins": ["yournamehere@microsoft.com"], "viewers": ["viewers"], + "actionLinkTemplate": "action link template", "dataSourceParameter": {"connectionString": + "connectionstring", "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '1405' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: f11a97b9-55f4-4069-97c7-addd924357a1 + content-length: '0' + date: Wed, 09 Sep 2020 22:36:41 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/0257f85c-6cfb-4d3a-b6d6-10eeadbd1018 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '383' + x-request-id: f11a97b9-55f4-4069-97c7-addd924357a1 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/0257f85c-6cfb-4d3a-b6d6-10eeadbd1018 + response: + body: + string: "{\"dataFeedId\":\"0257f85c-6cfb-4d3a-b6d6-10eeadbd1018\",\"dataFeedName\":\"testfeedasyncfe562b77\",\"metrics\":[{\"metricId\":\"16e0a58c-f999-4dae-b1f0-3482d867bb37\",\"metricName\":\"cost\",\"metricDisplayName\":\"display + cost\",\"metricDescription\":\"the cost\"},{\"metricId\":\"5b6d7c0d-1294-463f-ab6b-07686a5bd463\",\"metricName\":\"revenue\",\"metricDisplayName\":\"display + revenue\",\"metricDescription\":\"the revenue\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"display + category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"display + city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"Timestamp\",\"startOffsetInSeconds\":-1,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Custom\",\"granularityAmount\":20,\"allUpIdentification\":\"sumrollup\",\"needRollup\":\"AlreadyRollup\",\"fillMissingPointType\":\"CustomValue\",\"fillMissingPointValue\":10.0,\"rollUpMethod\":\"Sum\",\"rollUpColumns\":[],\"dataFeedDescription\":\"my + first data feed\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":0,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\",\"yournamehere@microsoft.com\"],\"viewers\":[\"viewers\"],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-09T22:36:41Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"action + link template\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 9faf8659-f749-4761-b4c2-afa08356a652 + content-length: '1640' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:36:41 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '124' + x-request-id: 9faf8659-f749-4761-b4c2-afa08356a652 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/0257f85c-6cfb-4d3a-b6d6-10eeadbd1018 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/0257f85c-6cfb-4d3a-b6d6-10eeadbd1018 + response: + body: + string: '' + headers: + apim-request-id: 527f456d-f8c4-4d9a-959d-08c877703943 + content-length: '0' + date: Wed, 09 Sep 2020 22:36:42 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '253' + x-request-id: 527f456d-f8c4-4d9a-959d-08c877703943 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/0257f85c-6cfb-4d3a-b6d6-10eeadbd1018 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/0257f85c-6cfb-4d3a-b6d6-10eeadbd1018 + response: + body: + string: '{"code":"ERROR_INVALID_PARAMETER","message":"datafeedId is invalid."}' + headers: + apim-request-id: 3f36a74f-49f4-4404-85a8-9722d28629e4 + content-length: '69' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:36:42 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '36' + x-request-id: 3f36a74f-49f4-4404-85a8-9722d28629e4 + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/0257f85c-6cfb-4d3a-b6d6-10eeadbd1018 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_application_insights.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_application_insights.yaml new file mode 100644 index 000000000000..e5b9678cc3d9 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_application_insights.yaml @@ -0,0 +1,91 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "AzureApplicationInsights", "dataFeedName": "applicationinsightsasyncd2561c20", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2020-07-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"azureCloud": "Azure", "applicationId": "3706fe8b-98f1-47c7-bf69-b73b6e53274d", + "apiKey": "connectionstring", "query": "let gran=60m; let starttime=datetime(@StartTime); + let endtime=starttime + gran; requests |\\u202fwhere\\u202ftimestamp\\u202f>=\\u202fstarttime\\u202fand\\u202ftimestamp\\u202f<\\u202fendtime + |\\u202fsummarize\\u202frequest_count\\u202f=\\u202fcount(),\\u202fduration_avg_ms\\u202f=\\u202favg(duration),\\u202fduration_95th_ms\\u202f=\\u202fpercentile(duration,\\u202f95),\\u202fduration_max_ms\\u202f=\\u202fmax(duration)\\u202fby\\u202fresultCode"}}''' + headers: + Accept: + - application/json + Content-Length: + - '1017' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: f40e9d7e-a96f-468a-821d-4b65d9619e96 + content-length: '0' + date: Tue, 15 Sep 2020 16:05:52 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/2cc0b3fe-8528-438d-a470-3fd7fcf05800 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '416' + x-request-id: f40e9d7e-a96f-468a-821d-4b65d9619e96 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/2cc0b3fe-8528-438d-a470-3fd7fcf05800 + response: + body: + string: "{\"dataFeedId\":\"2cc0b3fe-8528-438d-a470-3fd7fcf05800\",\"dataFeedName\":\"applicationinsightsasyncd2561c20\",\"metrics\":[{\"metricId\":\"54ff6547-56ed-4f87-ba28-3a2f0c28c074\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"3c56f653-53e2-442b-8e6e-716139922d2a\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2020-07-01T00:00:00Z\",\"dataSourceType\":\"AzureApplicationInsights\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-15T16:05:53Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"apiKey\":\"connectionstring\",\"query\":\"let + gran=60m; let starttime=datetime(@StartTime); let endtime=starttime + gran; + requests |\u202Fwhere\u202Ftimestamp\u202F>=\u202Fstarttime\u202Fand\u202Ftimestamp\u202F<\u202Fendtime + |\u202Fsummarize\u202Frequest_count\u202F=\u202Fcount(),\u202Fduration_avg_ms\u202F=\u202Favg(duration),\u202Fduration_95th_ms\u202F=\u202Fpercentile(duration,\u202F95),\u202Fduration_max_ms\u202F=\u202Fmax(duration)\u202Fby\u202FresultCode\",\"azureCloud\":\"Azure\",\"applicationId\":\"3706fe8b-98f1-47c7-bf69-b73b6e53274d\"}}" + headers: + apim-request-id: 37f322f6-4a32-4763-9169-42d427c81de1 + content-length: '1680' + content-type: application/json; charset=utf-8 + date: Tue, 15 Sep 2020 16:05:53 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '135' + x-request-id: 37f322f6-4a32-4763-9169-42d427c81de1 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/2cc0b3fe-8528-438d-a470-3fd7fcf05800 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/2cc0b3fe-8528-438d-a470-3fd7fcf05800 + response: + body: + string: '' + headers: + apim-request-id: aaf7d59e-b906-40fb-ae6f-ee1cad12bac6 + content-length: '0' + date: Tue, 15 Sep 2020 16:05:53 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '302' + x-request-id: aaf7d59e-b906-40fb-ae6f-ee1cad12bac6 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/2cc0b3fe-8528-438d-a470-3fd7fcf05800 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_azure_blob.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_azure_blob.yaml new file mode 100644 index 000000000000..89a1204e5851 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_azure_blob.yaml @@ -0,0 +1,86 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "AzureBlob", "dataFeedName": "blobfeedasyncd0c235a", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "container": + "adsample", "blobTemplate": "%Y/%m/%d/%h/JsonFormatV2.json"}}''' + headers: + Accept: + - application/json + Content-Length: + - '903' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 2d456dfb-5c6c-4fb4-a50d-87dd6be113b8 + content-length: '0' + date: Wed, 09 Sep 2020 22:36:45 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/a5522d39-e802-4398-a046-a99364c6c9b8 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '324' + x-request-id: 2d456dfb-5c6c-4fb4-a50d-87dd6be113b8 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/a5522d39-e802-4398-a046-a99364c6c9b8 + response: + body: + string: '{"dataFeedId":"a5522d39-e802-4398-a046-a99364c6c9b8","dataFeedName":"blobfeedasyncd0c235a","metrics":[{"metricId":"e26fb3d2-4bef-45a4-9c69-7d48078ed0e9","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"680a72f9-9044-4e3e-9555-a7ed99e775df","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-10-01T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T22:36:45Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"connectionstring","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json"}}' + headers: + apim-request-id: 1c1d37e0-3ebb-4f07-8e54-2d0482cf14ae + content-length: '1640' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:36:45 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '125' + x-request-id: 1c1d37e0-3ebb-4f07-8e54-2d0482cf14ae + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/a5522d39-e802-4398-a046-a99364c6c9b8 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/a5522d39-e802-4398-a046-a99364c6c9b8 + response: + body: + string: '' + headers: + apim-request-id: 8784ee5f-b94d-4e62-99b4-4de17f6f8a21 + content-length: '0' + date: Wed, 09 Sep 2020 22:36:45 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '309' + x-request-id: 8784ee5f-b94d-4e62-99b4-4de17f6f8a21 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/a5522d39-e802-4398-a046-a99364c6c9b8 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_azure_cosmos_db.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_azure_cosmos_db.yaml new file mode 100644 index 000000000000..7c08c08c16b2 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_azure_cosmos_db.yaml @@ -0,0 +1,88 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "AzureCosmosDB", "dataFeedName": "cosmosfeedasyncc48b2574", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "sqlQuery": + "\''SELECT * FROM Items I where I.Timestamp >= @StartTime and I.Timestamp < + @EndTime\''", "database": "adsample", "collectionId": "adsample"}}''' + headers: + Accept: + - application/json + Content-Length: + - '759' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 163a5d38-d1cc-4ba2-9389-0714532a6957 + content-length: '0' + date: Wed, 09 Sep 2020 22:36:47 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/6be2c4d2-6376-47a3-92c4-05fb27c36a3b + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '879' + x-request-id: 163a5d38-d1cc-4ba2-9389-0714532a6957 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/6be2c4d2-6376-47a3-92c4-05fb27c36a3b + response: + body: + string: '{"dataFeedId":"6be2c4d2-6376-47a3-92c4-05fb27c36a3b","dataFeedName":"cosmosfeedasyncc48b2574","metrics":[{"metricId":"fd161e3d-02eb-46d7-972f-0e1374885845","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"aabc13b3-c01f-4830-a09d-1a8a9b0962fa","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-10-01T00:00:00Z","dataSourceType":"AzureCosmosDB","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T22:36:48Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring","database":"adsample","sqlQuery":"''SELECT + * FROM Items I where I.Timestamp >= @StartTime and I.Timestamp < @EndTime''","collectionId":"adsample"}}' + headers: + apim-request-id: befc7cf2-bb2f-4632-9572-70b6ad21ac74 + content-length: '1494' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:36:47 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '123' + x-request-id: befc7cf2-bb2f-4632-9572-70b6ad21ac74 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/6be2c4d2-6376-47a3-92c4-05fb27c36a3b +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/6be2c4d2-6376-47a3-92c4-05fb27c36a3b + response: + body: + string: '' + headers: + apim-request-id: ff4ca5b9-5528-4a26-92e7-7bfbbba5c64f + content-length: '0' + date: Wed, 09 Sep 2020 22:36:49 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '280' + x-request-id: ff4ca5b9-5528-4a26-92e7-7bfbbba5c64f + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/6be2c4d2-6376-47a3-92c4-05fb27c36a3b +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_azure_table.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_azure_table.yaml new file mode 100644 index 000000000000..0bab57648e91 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_azure_table.yaml @@ -0,0 +1,87 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "AzureTable", "dataFeedName": "tablefeedasync30e623c3", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "table": + "adsample", "query": "PartitionKey ge \''@StartTime\'' and PartitionKey lt \''@EndTime\''"}}''' + headers: + Accept: + - application/json + Content-Length: + - '721' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 61b55f30-4403-4c42-9cf7-e02ad03e04a1 + content-length: '0' + date: Wed, 09 Sep 2020 22:36:49 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/360e2426-0281-404c-a539-17d44cf807e5 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '347' + x-request-id: 61b55f30-4403-4c42-9cf7-e02ad03e04a1 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/360e2426-0281-404c-a539-17d44cf807e5 + response: + body: + string: '{"dataFeedId":"360e2426-0281-404c-a539-17d44cf807e5","dataFeedName":"tablefeedasync30e623c3","metrics":[{"metricId":"4129f08b-aa39-42a7-a78b-9369788619d6","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"3955705b-3647-4c33-9560-b17b8d062926","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-10-01T00:00:00Z","dataSourceType":"AzureTable","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T22:36:50Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring","query":"PartitionKey + ge ''@StartTime'' and PartitionKey lt ''@EndTime''","table":"adsample"}}' + headers: + apim-request-id: dafb7c68-7421-430c-92f9-637e44c1937e + content-length: '1458' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:36:49 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '139' + x-request-id: dafb7c68-7421-430c-92f9-637e44c1937e + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/360e2426-0281-404c-a539-17d44cf807e5 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/360e2426-0281-404c-a539-17d44cf807e5 + response: + body: + string: '' + headers: + apim-request-id: 8fcb25ce-6de5-4078-a4cd-e2a5c0260cbc + content-length: '0' + date: Wed, 09 Sep 2020 22:36:50 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '255' + x-request-id: 8fcb25ce-6de5-4078-a4cd-e2a5c0260cbc + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/360e2426-0281-404c-a539-17d44cf807e5 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_data_explorer.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_data_explorer.yaml new file mode 100644 index 000000000000..d4ee3c6e050e --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_data_explorer.yaml @@ -0,0 +1,89 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "AzureDataExplorer", "dataFeedName": "azuredataexplorerasync78c3249f", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-01-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "let StartDateTime = datetime(@StartTime); let EndDateTime = StartDateTime + + 1d; adsample | where Timestamp >= StartDateTime and Timestamp < EndDateTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '898' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 35c29994-14f0-480b-88bf-536143df7e22 + content-length: '0' + date: Wed, 09 Sep 2020 22:36:51 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/65540d94-6e1a-488e-b165-8615f73689f2 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '434' + x-request-id: 35c29994-14f0-480b-88bf-536143df7e22 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/65540d94-6e1a-488e-b165-8615f73689f2 + response: + body: + string: '{"dataFeedId":"65540d94-6e1a-488e-b165-8615f73689f2","dataFeedName":"azuredataexplorerasync78c3249f","metrics":[{"metricId":"b98f9538-d972-4798-811e-ae65748c69a2","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"f5553f2c-db1d-4173-86a8-9292b1c288cf","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-01T00:00:00Z","dataSourceType":"AzureDataExplorer","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T22:36:52Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring","query":"let + StartDateTime = datetime(@StartTime); let EndDateTime = StartDateTime + 1d; + adsample | where Timestamp >= StartDateTime and Timestamp < EndDateTime"}}' + headers: + apim-request-id: 34bc0cfd-ec1b-4673-9078-a135d4aaf800 + content-length: '1637' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:36:51 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '130' + x-request-id: 34bc0cfd-ec1b-4673-9078-a135d4aaf800 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/65540d94-6e1a-488e-b165-8615f73689f2 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/65540d94-6e1a-488e-b165-8615f73689f2 + response: + body: + string: '' + headers: + apim-request-id: 21e6e417-bfa3-48b3-9d86-bd2debcd1f8a + content-length: '0' + date: Wed, 09 Sep 2020 22:36:52 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '253' + x-request-id: 21e6e417-bfa3-48b3-9d86-bd2debcd1f8a + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/65540d94-6e1a-488e-b165-8615f73689f2 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_datalake.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_datalake.yaml new file mode 100644 index 000000000000..07698852fcd5 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_datalake.yaml @@ -0,0 +1,88 @@ +interactions: +- request: + body: '{"dataSourceType": "AzureDataLakeStorageGen2", "dataFeedName": "datalakeasync9c7e16fb", + "granularityName": "Daily", "metrics": [{"metricName": "cost", "metricDisplayName": + "Cost"}, {"metricName": "revenue", "metricDisplayName": "Revenue"}], "dimension": + [{"dimensionName": "category", "dimensionDisplayName": "Category"}, {"dimensionName": + "city", "dimensionDisplayName": "City"}], "dataStartFrom": "2019-01-01T00:00:00.000Z", + "startOffsetInSeconds": 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": + -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": {"accountName": "adsampledatalakegen2", + "accountKey": "connectionstring", "fileSystemName": "adsample", "directoryTemplate": + "%Y/%m/%d", "fileTemplate": "adsample.json"}}' + headers: + Accept: + - application/json + Content-Length: + - '805' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 44621909-f22b-4990-b984-e561ec090210 + content-length: '0' + date: Fri, 25 Sep 2020 17:44:38 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/2492e624-235d-4a42-9841-19251bc2204d + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '463' + x-request-id: 44621909-f22b-4990-b984-e561ec090210 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/2492e624-235d-4a42-9841-19251bc2204d + response: + body: + string: '{"dataFeedId":"2492e624-235d-4a42-9841-19251bc2204d","dataFeedName":"datalakeasync9c7e16fb","metrics":[{"metricId":"ece9ca70-e593-45fc-9bda-911d199234d1","metricName":"cost","metricDisplayName":"Cost","metricDescription":""},{"metricId":"65d3dd85-a08f-40eb-b38b-67b5bdf264fd","metricName":"revenue","metricDisplayName":"Revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"Category"},{"dimensionName":"city","dimensionDisplayName":"City"}],"dataStartFrom":"2019-01-01T00:00:00Z","dataSourceType":"AzureDataLakeStorageGen2","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-25T17:44:39Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"fileTemplate":"adsample.json","accountName":"adsampledatalakegen2","directoryTemplate":"%Y/%m/%d","fileSystemName":"adsample","accountKey":"connectionstring"}}' + headers: + apim-request-id: af8731a0-9f27-4cd8-9739-1176e8d31d50 + content-length: '1409' + content-type: application/json; charset=utf-8 + date: Fri, 25 Sep 2020 17:44:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '129' + x-request-id: af8731a0-9f27-4cd8-9739-1176e8d31d50 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/2492e624-235d-4a42-9841-19251bc2204d +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/2492e624-235d-4a42-9841-19251bc2204d + response: + body: + string: '' + headers: + apim-request-id: 876ee2e7-39b4-432d-bdfb-f24be534fe1d + content-length: '0' + date: Fri, 25 Sep 2020 17:44:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '288' + x-request-id: 876ee2e7-39b4-432d-bdfb-f24be534fe1d + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/2492e624-235d-4a42-9841-19251bc2204d +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_elasticsearch.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_elasticsearch.yaml new file mode 100644 index 000000000000..8d0a32d6c36b --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_elasticsearch.yaml @@ -0,0 +1,89 @@ +interactions: +- request: + body: '{"dataSourceType": "Elasticsearch", "dataFeedName": "elasticasync168d191f", + "granularityName": "Daily", "metrics": [{"metricName": "cost", "metricDisplayName": + "Cost"}, {"metricName": "revenue", "metricDisplayName": "Revenue"}], "dimension": + [{"dimensionName": "category", "dimensionDisplayName": "Category"}, {"dimensionName": + "city", "dimensionDisplayName": "City"}], "dataStartFrom": "2019-01-01T00:00:00.000Z", + "startOffsetInSeconds": 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": + -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": {"host": "ad-sample-es.westus2.cloudapp.azure.com", + "port": "9200", "authHeader": "connectionstring", "query": "''select * from + adsample where timestamp = @StartTime''"}}' + headers: + Accept: + - application/json + Content-Length: + - '737' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 96dc1683-f990-446d-ac25-0fc672c79386 + content-length: '0' + date: Fri, 25 Sep 2020 17:44:58 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/addf9eab-7403-4f33-9ffe-73080b73720f + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '399' + x-request-id: 96dc1683-f990-446d-ac25-0fc672c79386 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/addf9eab-7403-4f33-9ffe-73080b73720f + response: + body: + string: '{"dataFeedId":"addf9eab-7403-4f33-9ffe-73080b73720f","dataFeedName":"elasticasync168d191f","metrics":[{"metricId":"23f7757d-6947-4109-a2ba-37cb35fa8c4f","metricName":"cost","metricDisplayName":"Cost","metricDescription":""},{"metricId":"8cb3a836-bea8-41d8-b1fb-5c8a49484996","metricName":"revenue","metricDisplayName":"Revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"Category"},{"dimensionName":"city","dimensionDisplayName":"City"}],"dataStartFrom":"2019-01-01T00:00:00Z","dataSourceType":"Elasticsearch","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-25T17:44:58Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"authHeader":"connectionstring","port":"9200","query":"''select + * from adsample where timestamp = @StartTime''","host":"ad-sample-es.westus2.cloudapp.azure.com"}}' + headers: + apim-request-id: 697c7c83-e0cd-450c-b285-021588e0895a + content-length: '1343' + content-type: application/json; charset=utf-8 + date: Fri, 25 Sep 2020 17:44:59 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '135' + x-request-id: 697c7c83-e0cd-450c-b285-021588e0895a + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/addf9eab-7403-4f33-9ffe-73080b73720f +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/addf9eab-7403-4f33-9ffe-73080b73720f + response: + body: + string: '' + headers: + apim-request-id: cc0208b6-77fa-4cb4-ac75-09fcf8536f4a + content-length: '0' + date: Fri, 25 Sep 2020 17:44:59 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '272' + x-request-id: cc0208b6-77fa-4cb4-ac75-09fcf8536f4a + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/addf9eab-7403-4f33-9ffe-73080b73720f +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_http_request_get.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_http_request_get.yaml new file mode 100644 index 000000000000..59ce0c932fa6 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_http_request_get.yaml @@ -0,0 +1,85 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "HttpRequest", "dataFeedName": "httprequestfeedgetasync66241a8b", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"url": "connectionstring", "httpMethod": "GET"}}''' + headers: + Accept: + - application/json + Content-Length: + - '559' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 64da27c7-dc4d-4cd4-bd24-c884ca9ac992 + content-length: '0' + date: Fri, 11 Sep 2020 22:36:54 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/9fdc7938-4a0b-4ea5-b5a3-10c7576f9f1b + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '629' + x-request-id: 64da27c7-dc4d-4cd4-bd24-c884ca9ac992 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/9fdc7938-4a0b-4ea5-b5a3-10c7576f9f1b + response: + body: + string: '{"dataFeedId":"9fdc7938-4a0b-4ea5-b5a3-10c7576f9f1b","dataFeedName":"httprequestfeedgetasync66241a8b","metrics":[{"metricId":"599911b7-a09b-4b39-8190-51ee24520197","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"09a39457-ceee-4718-9199-2d1fe6d70f43","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-10-01T00:00:00Z","dataSourceType":"HttpRequest","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-11T22:36:54Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"httpMethod":"GET","url":"connectionstring"}}' + headers: + apim-request-id: 5eeec3b1-296b-46e6-86dc-32f0449ab291 + content-length: '1298' + content-type: application/json; charset=utf-8 + date: Fri, 11 Sep 2020 22:36:55 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '127' + x-request-id: 5eeec3b1-296b-46e6-86dc-32f0449ab291 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/9fdc7938-4a0b-4ea5-b5a3-10c7576f9f1b +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/9fdc7938-4a0b-4ea5-b5a3-10c7576f9f1b + response: + body: + string: '' + headers: + apim-request-id: 257c6c1c-d178-41ae-add1-a1bda163d70e + content-length: '0' + date: Fri, 11 Sep 2020 22:36:55 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '288' + x-request-id: 257c6c1c-d178-41ae-add1-a1bda163d70e + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/9fdc7938-4a0b-4ea5-b5a3-10c7576f9f1b +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_http_request_post.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_http_request_post.yaml new file mode 100644 index 000000000000..8b0ce049cc8c --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_http_request_post.yaml @@ -0,0 +1,87 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "HttpRequest", "dataFeedName": "httprequestfeedpostasync11d32682", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"url": "connectionstring", "httpMethod": "POST", + "payload": "{\''startTime\'': \''@StartTime\''}"}}''' + headers: + Accept: + - application/json + Content-Length: + - '575' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: dfd8cefb-b11d-404e-afb8-65868bc10b28 + content-length: '0' + date: Thu, 10 Sep 2020 16:30:12 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/dab1caee-2be0-4dfe-84b9-1ae87a01fd01 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '386' + x-request-id: dfd8cefb-b11d-404e-afb8-65868bc10b28 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/dab1caee-2be0-4dfe-84b9-1ae87a01fd01 + response: + body: + string: '{"dataFeedId":"dab1caee-2be0-4dfe-84b9-1ae87a01fd01","dataFeedName":"httprequestfeedpostasync11d32682","metrics":[{"metricId":"702d6aa1-69ad-42b8-9bd8-801419ac2f7b","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"d0888606-261d-4280-b105-8e05af9c617f","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-10-01T00:00:00Z","dataSourceType":"HttpRequest","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-10T16:30:13Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"payload":"{''startTime'': + ''@StartTime''}","httpMethod":"POST","url":"connectionstring"}}' + headers: + apim-request-id: 172258bd-807f-4be0-86c2-48cf99808166 + content-length: '1312' + content-type: application/json; charset=utf-8 + date: Thu, 10 Sep 2020 16:30:13 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '133' + x-request-id: 172258bd-807f-4be0-86c2-48cf99808166 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/dab1caee-2be0-4dfe-84b9-1ae87a01fd01 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/dab1caee-2be0-4dfe-84b9-1ae87a01fd01 + response: + body: + string: '' + headers: + apim-request-id: 8aab8dd3-a380-44a3-9cc1-3606b293a36a + content-length: '0' + date: Thu, 10 Sep 2020 16:30:13 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '275' + x-request-id: 8aab8dd3-a380-44a3-9cc1-3606b293a36a + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/dab1caee-2be0-4dfe-84b9-1ae87a01fd01 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_influxdb.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_influxdb.yaml new file mode 100644 index 000000000000..d82b4a7c1d1b --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_influxdb.yaml @@ -0,0 +1,88 @@ +interactions: +- request: + body: 'b''b\''{"dataSourceType": "InfluxDB", "dataFeedName": "influxdbasyncc6a42291", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-01-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "database": + "adsample", "userName": "adreadonly", "password": "connectionstring", "query": + "\\\''select * from adsample2 where Timestamp = @StartTime\\\''"}}\''''' + headers: + Accept: + - application/json + Content-Length: + - '643' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 63946740-7cee-4457-9751-0f19b9eafbb7 + content-length: '0' + date: Wed, 09 Sep 2020 22:36:58 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/429f79ba-189a-425d-a262-5f8f81ae44ab + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '331' + x-request-id: 63946740-7cee-4457-9751-0f19b9eafbb7 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/429f79ba-189a-425d-a262-5f8f81ae44ab + response: + body: + string: '{"dataFeedId":"429f79ba-189a-425d-a262-5f8f81ae44ab","dataFeedName":"influxdbasyncc6a42291","metrics":[{"metricId":"cc531690-5d0d-43ea-b9e4-1aa7e68234d2","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"9ee4403f-6d33-4ffd-9370-d2421a6d1a8d","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-01T00:00:00Z","dataSourceType":"InfluxDB","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T22:36:58Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring","password":"connectionstring","database":"adsample","query":"''select + * from adsample2 where Timestamp = @StartTime''","userName":"adreadonly"}}' + headers: + apim-request-id: 55c777ef-9a09-4240-9642-62890dd4c31b + content-length: '1376' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:36:58 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '120' + x-request-id: 55c777ef-9a09-4240-9642-62890dd4c31b + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/429f79ba-189a-425d-a262-5f8f81ae44ab +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/429f79ba-189a-425d-a262-5f8f81ae44ab + response: + body: + string: '' + headers: + apim-request-id: 029f58b8-6520-4d23-9cfd-1ee7bc115828 + content-length: '0' + date: Wed, 09 Sep 2020 22:37:04 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '5805' + x-request-id: 029f58b8-6520-4d23-9cfd-1ee7bc115828 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/429f79ba-189a-425d-a262-5f8f81ae44ab +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_mongodb.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_mongodb.yaml new file mode 100644 index 000000000000..e258a642d08b --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_mongodb.yaml @@ -0,0 +1,89 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "MongoDB", "dataFeedName": "mongodbasynca40d221b", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-01-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "database": + "adsample", "command": "{\\"find\\": \\"adsample\\", \\"filter\\": { Timestamp: + { $eq: @StartTime }} \\"batchSize\\": 2000,}"}}''' + headers: + Accept: + - application/json + Content-Length: + - '630' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 74f11a57-556d-472b-b1bc-b6469758e7f4 + content-length: '0' + date: Wed, 09 Sep 2020 22:55:56 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/ec6522f9-a252-480f-a69d-efc494975d06 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '728' + x-request-id: 74f11a57-556d-472b-b1bc-b6469758e7f4 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/ec6522f9-a252-480f-a69d-efc494975d06 + response: + body: + string: '{"dataFeedId":"ec6522f9-a252-480f-a69d-efc494975d06","dataFeedName":"mongodbasynca40d221b","metrics":[{"metricId":"6554678d-bd33-48eb-a811-569e8e4273d8","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"e579f0be-12cc-4b6a-9f9a-830c411d4dd9","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-01T00:00:00Z","dataSourceType":"MongoDB","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T22:55:56Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring","database":"adsample","command":"{\"find\": + \"adsample\", \"filter\": { Timestamp: { $eq: @StartTime }} \"batchSize\": + 2000,}"}}' + headers: + apim-request-id: de1dce64-b7cf-4ba6-98aa-4c2537481ec7 + content-length: '1367' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:55:56 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '128' + x-request-id: de1dce64-b7cf-4ba6-98aa-4c2537481ec7 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/ec6522f9-a252-480f-a69d-efc494975d06 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/ec6522f9-a252-480f-a69d-efc494975d06 + response: + body: + string: '' + headers: + apim-request-id: d49b5157-a06b-4cb3-9b80-8c40936e7051 + content-length: '0' + date: Wed, 09 Sep 2020 22:55:57 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '309' + x-request-id: d49b5157-a06b-4cb3-9b80-8c40936e7051 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/ec6522f9-a252-480f-a69d-efc494975d06 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_mysql.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_mysql.yaml new file mode 100644 index 000000000000..0006265e362a --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_mysql.yaml @@ -0,0 +1,87 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "MySql", "dataFeedName": "mysqlasync6081216b", "granularityName": + "Daily", "metrics": [{"metricName": "cost"}, {"metricName": "revenue"}], "dimension": + [{"dimensionName": "category"}, {"dimensionName": "city"}], "dataStartFrom": + "2019-01-01T00:00:00.000Z", "startOffsetInSeconds": 0, "maxConcurrency": -1, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": + {"connectionString": "Server=ad-sample.westcentralus.cloudapp.azure.com;Port=3306;Database=adsample;Uid=adreadonly;Pwd=connectionstring", + "query": "\''select * from adsample2 where Timestamp = @StartTime\''"}}''' + headers: + Accept: + - application/json + Content-Length: + - '614' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 882c5019-c283-4e2a-9d60-4516fd7f443f + content-length: '0' + date: Wed, 09 Sep 2020 23:33:34 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/bb46ea90-3955-4d5a-a161-30e4ca1c9611 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '5793' + x-request-id: 882c5019-c283-4e2a-9d60-4516fd7f443f + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/bb46ea90-3955-4d5a-a161-30e4ca1c9611 + response: + body: + string: '{"dataFeedId":"bb46ea90-3955-4d5a-a161-30e4ca1c9611","dataFeedName":"mysqlasync6081216b","metrics":[{"metricId":"277791b2-9a63-454f-a414-db371f1c8097","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"0c8188ec-8630-485e-ab78-f1193e32a4c2","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-01T00:00:00Z","dataSourceType":"MySql","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T23:33:34Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"Server=ad-sample.westcentralus.cloudapp.azure.com;Port=3306;Database=adsample;Uid=adreadonly;Pwd=connectionstring","query":"''select + * from adsample2 where Timestamp = @StartTime''"}}' + headers: + apim-request-id: c84a890c-191f-4bd0-8c16-fc01a729d13e + content-length: '1353' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 23:33:34 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '184' + x-request-id: c84a890c-191f-4bd0-8c16-fc01a729d13e + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/bb46ea90-3955-4d5a-a161-30e4ca1c9611 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/bb46ea90-3955-4d5a-a161-30e4ca1c9611 + response: + body: + string: '' + headers: + apim-request-id: 56d3d6c7-93d3-476c-8cf6-5b7aa3204a80 + content-length: '0' + date: Wed, 09 Sep 2020 23:33:34 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '345' + x-request-id: 56d3d6c7-93d3-476c-8cf6-5b7aa3204a80 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/bb46ea90-3955-4d5a-a161-30e4ca1c9611 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_postgresql.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_postgresql.yaml new file mode 100644 index 000000000000..f30b5693123b --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_data_feed_with_postgresql.yaml @@ -0,0 +1,87 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "PostgreSql", "dataFeedName": "postgresqlasyncdd72389", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-01-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "Host=adsamplepostgresql.eastus.cloudapp.azure.com;Username=adreadonly;Password=connectionstring;Database=adsample;Timeout=30;", + "query": "\''select * from adsample2 where Timestamp = @StartTime\''"}}''' + headers: + Accept: + - application/json + Content-Length: + - '635' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 64470970-1b88-4591-b466-47f2908aed4e + content-length: '0' + date: Wed, 09 Sep 2020 23:09:16 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/78bd925e-cd06-4dc3-a4d6-cb990b687c75 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '583' + x-request-id: 64470970-1b88-4591-b466-47f2908aed4e + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/78bd925e-cd06-4dc3-a4d6-cb990b687c75 + response: + body: + string: '{"dataFeedId":"78bd925e-cd06-4dc3-a4d6-cb990b687c75","dataFeedName":"postgresqlasyncdd72389","metrics":[{"metricId":"bb4209b8-099c-48e0-8353-ca4d8dd3865e","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"8355fadc-70cc-4d71-836d-111a3c848ce6","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-01T00:00:00Z","dataSourceType":"PostgreSql","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T23:09:17Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"Host=adsamplepostgresql.eastus.cloudapp.azure.com;Username=adreadonly;Password=connectionstring;Database=adsample;Timeout=30;","query":"''select + * from adsample2 where Timestamp = @StartTime''"}}' + headers: + apim-request-id: d526a18e-d1e7-4cfd-9665-5be0750bae35 + content-length: '1374' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 23:09:17 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '247' + x-request-id: d526a18e-d1e7-4cfd-9665-5be0750bae35 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/78bd925e-cd06-4dc3-a4d6-cb990b687c75 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/78bd925e-cd06-4dc3-a4d6-cb990b687c75 + response: + body: + string: '' + headers: + apim-request-id: 888c211d-1386-4305-97ec-43965432f640 + content-length: '0' + date: Wed, 09 Sep 2020 23:09:17 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '264' + x-request-id: 888c211d-1386-4305-97ec-43965432f640 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/78bd925e-cd06-4dc3-a4d6-cb990b687c75 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_simple_data_feed.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_simple_data_feed.yaml new file mode 100644 index 000000000000..f04b9726f912 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_create_simple_data_feed.yaml @@ -0,0 +1,85 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "testfeeddefb1fa4", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '699' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 2ae56d63-1025-4df3-927a-61f5747f54b5 + content-length: '0' + date: Wed, 09 Sep 2020 22:37:15 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/b504f313-3e39-44de-85ef-9a8541a482f3 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '310' + x-request-id: 2ae56d63-1025-4df3-927a-61f5747f54b5 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/b504f313-3e39-44de-85ef-9a8541a482f3 + response: + body: + string: "{\"dataFeedId\":\"b504f313-3e39-44de-85ef-9a8541a482f3\",\"dataFeedName\":\"testfeeddefb1fa4\",\"metrics\":[{\"metricId\":\"3eee5310-1f0d-48d7-8eb3-45ff90d5b926\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"8d1c11f0-2cea-4a5d-82a1-36ce0fa187e0\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-09T22:37:15Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: a700e6d3-112e-4324-9636-3265b14669d8 + content-length: '1373' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:37:15 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '140' + x-request-id: a700e6d3-112e-4324-9636-3265b14669d8 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/b504f313-3e39-44de-85ef-9a8541a482f3 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/b504f313-3e39-44de-85ef-9a8541a482f3 + response: + body: + string: '' + headers: + apim-request-id: a088aaaa-8d62-40b9-9c0a-0c85ad4880f6 + content-length: '0' + date: Wed, 09 Sep 2020 22:37:16 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '317' + x-request-id: a088aaaa-8d62-40b9-9c0a-0c85ad4880f6 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/b504f313-3e39-44de-85ef-9a8541a482f3 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds.yaml new file mode 100644 index 000000000000..b70f55df83ef --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds.yaml @@ -0,0 +1,30 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '{"value":[{"dataFeedId":"cf291ce6-ea8e-409b-b17d-bed01cc57dc0","dataFeedName":"updated + name","metrics":[{"metricId":"af6224d9-cbd2-43ac-914b-0d9cc5a6132e","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"b4a6347b-0696-4541-954d-4fb0a307acfb","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-02T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"updated + description","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":["krpratic@microsoft.com"],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-16T19:36:50Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"no","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json"}},{"dataFeedId":"data_feed_id","dataFeedName":"testDataFeed1","metrics":[{"metricId":"metric_id","metricName":"Metric1","metricDisplayName":"Metric1","metricDescription":""},{"metricId":"6b593f73-345c-40eb-a15c-7ec1fc73b028","metricName":"Metric2","metricDisplayName":"Metric2","metricDescription":""}],"dimension":[{"dimensionName":"Dim1","dimensionDisplayName":"Dim1"},{"dimensionName":"Dim2","dimensionDisplayName":"Dim2"}],"dataStartFrom":"2020-08-09T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"Timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["savaity@microsoft.com","krpratic@microsoft.com","yumeng@microsoft.com","xiangyan@microsoft.com","anuchan@microsoft.com","chriss@microsoft.com","mayurid@microsoft.com","johanste@microsoft.com","camaiaor@microsoft.com","kaolsze@microsoft.com","kaghiya@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:43:30Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"connectionstring","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json","jsonFormatVersion":"V2"}},{"dataFeedId":"b9dae651-63bc-4a98-a7c5-d8322b20c962","dataFeedName":"azsqlDatafeed","metrics":[{"metricId":"802153a9-1671-4a6f-901e-66bbf09384d9","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"f05c2f81-1e96-47ed-baa1-ab1a2d35562a","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2020-08-11T00:00:00Z","dataSourceType":"SqlServer","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":"__SUM__","needRollup":"NeedRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"Sum","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["kaolsze@microsoft.com","camaiaor@microsoft.com","mayurid@microsoft.com","krpratic@microsoft.com","kaghiya@microsoft.com","xiangyan@microsoft.com","chriss@microsoft.com","yumeng@microsoft.com","johanste@microsoft.com","anuchan@microsoft.com","savaity@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:41:00Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring;","query":"select + * from adsample2 where Timestamp = @StartTime"}}],"@nextLink":null}' + headers: + apim-request-id: b69f7c7f-2b43-4b19-b61b-5d0a38a1e562 + content-length: '4961' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 01:46:11 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '309' + x-request-id: b69f7c7f-2b43-4b19-b61b-5d0a38a1e562 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds_with_data_feed_name.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds_with_data_feed_name.yaml new file mode 100644 index 000000000000..a55635d5472c --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds_with_data_feed_name.yaml @@ -0,0 +1,27 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds?dataFeedName=testDataFeed1 + response: + body: + string: '{"value":[{"dataFeedId":"data_feed_id","dataFeedName":"testDataFeed1","metrics":[{"metricId":"metric_id","metricName":"Metric1","metricDisplayName":"Metric1","metricDescription":""},{"metricId":"6b593f73-345c-40eb-a15c-7ec1fc73b028","metricName":"Metric2","metricDisplayName":"Metric2","metricDescription":""}],"dimension":[{"dimensionName":"Dim1","dimensionDisplayName":"Dim1"},{"dimensionName":"Dim2","dimensionDisplayName":"Dim2"}],"dataStartFrom":"2020-08-09T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"Timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["anuchan@microsoft.com","xiangyan@microsoft.com","krpratic@microsoft.com","mayurid@microsoft.com","savaity@microsoft.com","yumeng@microsoft.com","camaiaor@microsoft.com","kaghiya@microsoft.com","johanste@microsoft.com","kaolsze@microsoft.com","chriss@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:43:30Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"connectionstring","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json","jsonFormatVersion":"V2"}}],"@nextLink":null}' + headers: + apim-request-id: 4d30d448-533d-4f88-b79e-a563260121aa + content-length: '1933' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 01:46:22 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '10318' + x-request-id: 4d30d448-533d-4f88-b79e-a563260121aa + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds?dataFeedName=testDataFeed1 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds_with_granularity_type.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds_with_granularity_type.yaml new file mode 100644 index 000000000000..50e6c1bba0dd --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds_with_granularity_type.yaml @@ -0,0 +1,30 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds?granularityName=Daily + response: + body: + string: '{"value":[{"dataFeedId":"cf291ce6-ea8e-409b-b17d-bed01cc57dc0","dataFeedName":"updated + name","metrics":[{"metricId":"af6224d9-cbd2-43ac-914b-0d9cc5a6132e","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"b4a6347b-0696-4541-954d-4fb0a307acfb","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-02T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"updated + description","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":["krpratic@microsoft.com"],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-16T19:36:50Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"no","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json"}},{"dataFeedId":"data_feed_id","dataFeedName":"testDataFeed1","metrics":[{"metricId":"metric_id","metricName":"Metric1","metricDisplayName":"Metric1","metricDescription":""},{"metricId":"6b593f73-345c-40eb-a15c-7ec1fc73b028","metricName":"Metric2","metricDisplayName":"Metric2","metricDescription":""}],"dimension":[{"dimensionName":"Dim1","dimensionDisplayName":"Dim1"},{"dimensionName":"Dim2","dimensionDisplayName":"Dim2"}],"dataStartFrom":"2020-08-09T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"Timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["savaity@microsoft.com","krpratic@microsoft.com","yumeng@microsoft.com","xiangyan@microsoft.com","anuchan@microsoft.com","chriss@microsoft.com","mayurid@microsoft.com","johanste@microsoft.com","camaiaor@microsoft.com","kaolsze@microsoft.com","kaghiya@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:43:30Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"connectionstring","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json","jsonFormatVersion":"V2"}},{"dataFeedId":"b9dae651-63bc-4a98-a7c5-d8322b20c962","dataFeedName":"azsqlDatafeed","metrics":[{"metricId":"802153a9-1671-4a6f-901e-66bbf09384d9","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"f05c2f81-1e96-47ed-baa1-ab1a2d35562a","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2020-08-11T00:00:00Z","dataSourceType":"SqlServer","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":"__SUM__","needRollup":"NeedRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"Sum","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["kaolsze@microsoft.com","camaiaor@microsoft.com","mayurid@microsoft.com","krpratic@microsoft.com","kaghiya@microsoft.com","xiangyan@microsoft.com","chriss@microsoft.com","yumeng@microsoft.com","johanste@microsoft.com","anuchan@microsoft.com","savaity@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:41:00Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring;","query":"select + * from adsample2 where Timestamp = @StartTime"}}],"@nextLink":null}' + headers: + apim-request-id: aa00fa25-c846-4553-842a-73b24aa71437 + content-length: '4961' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 01:46:23 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '567' + x-request-id: aa00fa25-c846-4553-842a-73b24aa71437 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds?granularityName=Daily +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds_with_skip.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds_with_skip.yaml new file mode 100644 index 000000000000..e341967f249b --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds_with_skip.yaml @@ -0,0 +1,56 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '{"value":[{"dataFeedId":"cf291ce6-ea8e-409b-b17d-bed01cc57dc0","dataFeedName":"updated + name","metrics":[{"metricId":"af6224d9-cbd2-43ac-914b-0d9cc5a6132e","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"b4a6347b-0696-4541-954d-4fb0a307acfb","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-02T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"updated + description","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":["krpratic@microsoft.com"],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-16T19:36:50Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"no","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json"}},{"dataFeedId":"data_feed_id","dataFeedName":"testDataFeed1","metrics":[{"metricId":"metric_id","metricName":"Metric1","metricDisplayName":"Metric1","metricDescription":""},{"metricId":"6b593f73-345c-40eb-a15c-7ec1fc73b028","metricName":"Metric2","metricDisplayName":"Metric2","metricDescription":""}],"dimension":[{"dimensionName":"Dim1","dimensionDisplayName":"Dim1"},{"dimensionName":"Dim2","dimensionDisplayName":"Dim2"}],"dataStartFrom":"2020-08-09T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"Timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["savaity@microsoft.com","krpratic@microsoft.com","yumeng@microsoft.com","xiangyan@microsoft.com","anuchan@microsoft.com","chriss@microsoft.com","mayurid@microsoft.com","johanste@microsoft.com","camaiaor@microsoft.com","kaolsze@microsoft.com","kaghiya@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:43:30Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"connectionstring","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json","jsonFormatVersion":"V2"}},{"dataFeedId":"b9dae651-63bc-4a98-a7c5-d8322b20c962","dataFeedName":"azsqlDatafeed","metrics":[{"metricId":"802153a9-1671-4a6f-901e-66bbf09384d9","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"f05c2f81-1e96-47ed-baa1-ab1a2d35562a","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2020-08-11T00:00:00Z","dataSourceType":"SqlServer","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":"__SUM__","needRollup":"NeedRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"Sum","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["kaolsze@microsoft.com","camaiaor@microsoft.com","mayurid@microsoft.com","krpratic@microsoft.com","kaghiya@microsoft.com","xiangyan@microsoft.com","chriss@microsoft.com","yumeng@microsoft.com","johanste@microsoft.com","anuchan@microsoft.com","savaity@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:41:00Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring;","query":"select + * from adsample2 where Timestamp = @StartTime"}}],"@nextLink":null}' + headers: + apim-request-id: 9609b49b-f922-4990-8776-30dbae1e50fd + content-length: '4961' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 01:46:24 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '381' + x-request-id: 9609b49b-f922-4990-8776-30dbae1e50fd + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds?$skip=1 + response: + body: + string: '{"value":[{"dataFeedId":"data_feed_id","dataFeedName":"testDataFeed1","metrics":[{"metricId":"metric_id","metricName":"Metric1","metricDisplayName":"Metric1","metricDescription":""},{"metricId":"6b593f73-345c-40eb-a15c-7ec1fc73b028","metricName":"Metric2","metricDisplayName":"Metric2","metricDescription":""}],"dimension":[{"dimensionName":"Dim1","dimensionDisplayName":"Dim1"},{"dimensionName":"Dim2","dimensionDisplayName":"Dim2"}],"dataStartFrom":"2020-08-09T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"Timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["savaity@microsoft.com","krpratic@microsoft.com","yumeng@microsoft.com","xiangyan@microsoft.com","anuchan@microsoft.com","chriss@microsoft.com","mayurid@microsoft.com","johanste@microsoft.com","camaiaor@microsoft.com","kaolsze@microsoft.com","kaghiya@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:43:30Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"connectionstring","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json","jsonFormatVersion":"V2"}},{"dataFeedId":"b9dae651-63bc-4a98-a7c5-d8322b20c962","dataFeedName":"azsqlDatafeed","metrics":[{"metricId":"802153a9-1671-4a6f-901e-66bbf09384d9","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"f05c2f81-1e96-47ed-baa1-ab1a2d35562a","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2020-08-11T00:00:00Z","dataSourceType":"SqlServer","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":"__SUM__","needRollup":"NeedRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"Sum","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["kaolsze@microsoft.com","camaiaor@microsoft.com","mayurid@microsoft.com","krpratic@microsoft.com","kaghiya@microsoft.com","xiangyan@microsoft.com","chriss@microsoft.com","yumeng@microsoft.com","johanste@microsoft.com","anuchan@microsoft.com","savaity@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:41:00Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring;","query":"select + * from adsample2 where Timestamp = @StartTime"}}],"@nextLink":null}' + headers: + apim-request-id: e29e89ba-5087-4d66-b513-5435305ef80c + content-length: '3661' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 01:46:25 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '646' + x-request-id: e29e89ba-5087-4d66-b513-5435305ef80c + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds?$skip=1 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds_with_source_type.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds_with_source_type.yaml new file mode 100644 index 000000000000..ed8778685434 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds_with_source_type.yaml @@ -0,0 +1,29 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds?dataSourceType=AzureBlob + response: + body: + string: '{"value":[{"dataFeedId":"cf291ce6-ea8e-409b-b17d-bed01cc57dc0","dataFeedName":"updated + name","metrics":[{"metricId":"af6224d9-cbd2-43ac-914b-0d9cc5a6132e","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"b4a6347b-0696-4541-954d-4fb0a307acfb","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-02T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"updated + description","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":["krpratic@microsoft.com"],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-16T19:36:50Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"no","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json"}},{"dataFeedId":"data_feed_id","dataFeedName":"testDataFeed1","metrics":[{"metricId":"metric_id","metricName":"Metric1","metricDisplayName":"Metric1","metricDescription":""},{"metricId":"6b593f73-345c-40eb-a15c-7ec1fc73b028","metricName":"Metric2","metricDisplayName":"Metric2","metricDescription":""}],"dimension":[{"dimensionName":"Dim1","dimensionDisplayName":"Dim1"},{"dimensionName":"Dim2","dimensionDisplayName":"Dim2"}],"dataStartFrom":"2020-08-09T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"Timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["anuchan@microsoft.com","xiangyan@microsoft.com","krpratic@microsoft.com","mayurid@microsoft.com","savaity@microsoft.com","yumeng@microsoft.com","camaiaor@microsoft.com","kaghiya@microsoft.com","johanste@microsoft.com","kaolsze@microsoft.com","chriss@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:43:30Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"connectionstring","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json","jsonFormatVersion":"V2"}}],"@nextLink":null}' + headers: + apim-request-id: 3b305eda-2872-44ab-a326-fa4784149776 + content-length: '3233' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 01:46:27 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '326' + x-request-id: 3b305eda-2872-44ab-a326-fa4784149776 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds?dataSourceType=AzureBlob +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds_with_status.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds_with_status.yaml new file mode 100644 index 000000000000..57e36e3c77d5 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_list_data_feeds_with_status.yaml @@ -0,0 +1,27 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds?status=Paused + response: + body: + string: '{"value":[],"@nextLink":null}' + headers: + apim-request-id: b8856726-9c09-4e16-9c12-833e3004dc4f + content-length: '29' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 01:46:28 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '224' + x-request-id: b8856726-9c09-4e16-9c12-833e3004dc4f + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds?status=Paused +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_update_data_feed_by_reseting_properties.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_update_data_feed_by_reseting_properties.yaml new file mode 100644 index 000000000000..a4fc3fc9e87e --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_update_data_feed_by_reseting_properties.yaml @@ -0,0 +1,162 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "update821a1aff", "dataFeedDescription": + "my first data feed", "granularityName": "Daily", "metrics": [{"metricName": + "cost", "metricDisplayName": "display cost", "metricDescription": "the cost"}, + {"metricName": "revenue", "metricDisplayName": "display revenue", "metricDescription": + "the revenue"}], "dimension": [{"dimensionName": "category", "dimensionDisplayName": + "display category"}, {"dimensionName": "city", "dimensionDisplayName": "display + city"}], "timestampColumn": "Timestamp", "dataStartFrom": "2019-10-01T00:00:00.000Z", + "startOffsetInSeconds": -1, "maxConcurrency": 0, "minRetryIntervalInSeconds": + -1, "stopRetryAfterInSeconds": -1, "needRollup": "NoRollup", "rollUpMethod": + "None", "fillMissingPointType": "SmartFilling", "viewMode": "Private", "admins": + ["yournamehere@microsoft.com"], "viewers": ["viewers"], "actionLinkTemplate": + "action link template", "dataSourceParameter": {"connectionString": "connectionstring", + "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '1301' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: c1154d79-8247-407c-9829-99a87c70222a + content-length: '0' + date: Mon, 21 Sep 2020 23:40:21 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/828fb77e-ee57-4781-8080-8a9f9ab86e9e + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '438' + x-request-id: c1154d79-8247-407c-9829-99a87c70222a + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/828fb77e-ee57-4781-8080-8a9f9ab86e9e + response: + body: + string: "{\"dataFeedId\":\"828fb77e-ee57-4781-8080-8a9f9ab86e9e\",\"dataFeedName\":\"update821a1aff\",\"metrics\":[{\"metricId\":\"3568145c-46ee-467a-96a9-1b8e0ae6f015\",\"metricName\":\"cost\",\"metricDisplayName\":\"display + cost\",\"metricDescription\":\"the cost\"},{\"metricId\":\"8fa37e2d-94ca-4b66-83e6-9caaf594979a\",\"metricName\":\"revenue\",\"metricDisplayName\":\"display + revenue\",\"metricDescription\":\"the revenue\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"display + category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"display + city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"Timestamp\",\"startOffsetInSeconds\":-1,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"SmartFilling\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"my + first data feed\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":0,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\",\"yournamehere@microsoft.com\"],\"viewers\":[\"viewers\"],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T23:40:21Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"action + link template\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 3279bb1e-e3fc-48d1-a4f6-d2028e143199 + content-length: '1622' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:40:21 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '168' + x-request-id: 3279bb1e-e3fc-48d1-a4f6-d2028e143199 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/828fb77e-ee57-4781-8080-8a9f9ab86e9e +- request: + body: '{"dataFeedName": "update", "dataFeedDescription": null, "timestampColumn": + null, "startOffsetInSeconds": null, "maxConcurrency": null, "minRetryIntervalInSeconds": + null, "stopRetryAfterInSeconds": null, "needRollup": null, "rollUpMethod": null, + "rollUpColumns": null, "allUpIdentification": null, "fillMissingPointType": + null, "fillMissingPointValue": null, "viewMode": null, "viewers": null, "status": + null, "actionLinkTemplate": null}' + headers: + Accept: + - application/json + Content-Length: + - '436' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/828fb77e-ee57-4781-8080-8a9f9ab86e9e + response: + body: + string: '' + headers: + apim-request-id: 40ce64e9-fefa-4735-9af7-2fcaefe11e42 + content-length: '0' + date: Mon, 21 Sep 2020 23:40:22 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '144' + x-request-id: 40ce64e9-fefa-4735-9af7-2fcaefe11e42 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/828fb77e-ee57-4781-8080-8a9f9ab86e9e +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/828fb77e-ee57-4781-8080-8a9f9ab86e9e + response: + body: + string: "{\"dataFeedId\":\"828fb77e-ee57-4781-8080-8a9f9ab86e9e\",\"dataFeedName\":\"update\",\"metrics\":[{\"metricId\":\"3568145c-46ee-467a-96a9-1b8e0ae6f015\",\"metricName\":\"cost\",\"metricDisplayName\":\"display + cost\",\"metricDescription\":\"the cost\"},{\"metricId\":\"8fa37e2d-94ca-4b66-83e6-9caaf594979a\",\"metricName\":\"revenue\",\"metricDisplayName\":\"display + revenue\",\"metricDescription\":\"the revenue\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"display + category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"display + city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"Timestamp\",\"startOffsetInSeconds\":-1,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"SmartFilling\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"my + first data feed\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":0,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\",\"yournamehere@microsoft.com\"],\"viewers\":[\"viewers\"],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T23:40:21Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"action + link template\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: a96a4754-d505-4dd3-8a30-da3503dcbc91 + content-length: '1614' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:40:22 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '129' + x-request-id: a96a4754-d505-4dd3-8a30-da3503dcbc91 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/828fb77e-ee57-4781-8080-8a9f9ab86e9e +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/828fb77e-ee57-4781-8080-8a9f9ab86e9e + response: + body: + string: '' + headers: + apim-request-id: 4c7839bd-ffe8-4c00-9276-589f32234f50 + content-length: '0' + date: Mon, 21 Sep 2020 23:40:22 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '282' + x-request-id: 4c7839bd-ffe8-4c00-9276-589f32234f50 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/828fb77e-ee57-4781-8080-8a9f9ab86e9e +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_update_data_feed_with_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_update_data_feed_with_kwargs.yaml new file mode 100644 index 000000000000..c899dee3c6ef --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_update_data_feed_with_kwargs.yaml @@ -0,0 +1,162 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "update711c1662", "dataFeedDescription": + "my first data feed", "granularityName": "Daily", "metrics": [{"metricName": + "cost", "metricDisplayName": "display cost", "metricDescription": "the cost"}, + {"metricName": "revenue", "metricDisplayName": "display revenue", "metricDescription": + "the revenue"}], "dimension": [{"dimensionName": "category", "dimensionDisplayName": + "display category"}, {"dimensionName": "city", "dimensionDisplayName": "display + city"}], "timestampColumn": "Timestamp", "dataStartFrom": "2019-10-01T00:00:00.000Z", + "startOffsetInSeconds": -1, "maxConcurrency": 0, "minRetryIntervalInSeconds": + -1, "stopRetryAfterInSeconds": -1, "needRollup": "NoRollup", "rollUpMethod": + "None", "fillMissingPointType": "SmartFilling", "viewMode": "Private", "admins": + ["yournamehere@microsoft.com"], "viewers": ["viewers"], "actionLinkTemplate": + "action link template", "dataSourceParameter": {"connectionString": "connectionstring", + "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '1301' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 5a2f2c8f-07c4-440a-8987-323d636337e2 + content-length: '0' + date: Mon, 21 Sep 2020 23:40:24 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/b68f770b-78f3-40d9-8baa-f6c4a2170948 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '362' + x-request-id: 5a2f2c8f-07c4-440a-8987-323d636337e2 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/b68f770b-78f3-40d9-8baa-f6c4a2170948 + response: + body: + string: "{\"dataFeedId\":\"b68f770b-78f3-40d9-8baa-f6c4a2170948\",\"dataFeedName\":\"update711c1662\",\"metrics\":[{\"metricId\":\"377a330f-c68d-4b11-a2a1-5bc9ca20e230\",\"metricName\":\"cost\",\"metricDisplayName\":\"display + cost\",\"metricDescription\":\"the cost\"},{\"metricId\":\"1758b5c2-a59a-4820-ba72-309c37ee3b20\",\"metricName\":\"revenue\",\"metricDisplayName\":\"display + revenue\",\"metricDescription\":\"the revenue\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"display + category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"display + city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"Timestamp\",\"startOffsetInSeconds\":-1,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"SmartFilling\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"my + first data feed\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":0,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\",\"yournamehere@microsoft.com\"],\"viewers\":[\"viewers\"],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T23:40:24Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"action + link template\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: b878baaf-91c5-44af-afaa-edd11395f408 + content-length: '1622' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:40:24 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '148' + x-request-id: b878baaf-91c5-44af-afaa-edd11395f408 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/b68f770b-78f3-40d9-8baa-f6c4a2170948 +- request: + body: '{"dataFeedName": "update", "dataFeedDescription": "updated", "timestampColumn": + "time", "dataStartFrom": "2020-12-10T00:00:00.000Z", "startOffsetInSeconds": + 1, "maxConcurrency": 1, "minRetryIntervalInSeconds": 1, "stopRetryAfterInSeconds": + 1, "needRollup": "AlreadyRollup", "rollUpMethod": "Sum", "rollUpColumns": [], + "allUpIdentification": "sumrollup", "fillMissingPointType": "CustomValue", "fillMissingPointValue": + 2, "viewMode": "Public", "viewers": ["updated"], "status": "Paused", "actionLinkTemplate": + "updated", "dataSourceParameter": {"connectionString": "updated", "query": "get + data"}}' + headers: + Accept: + - application/json + Content-Length: + - '596' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/b68f770b-78f3-40d9-8baa-f6c4a2170948 + response: + body: + string: '' + headers: + apim-request-id: d3857b16-830a-4e18-8b3d-e757d24c64e0 + content-length: '0' + date: Mon, 21 Sep 2020 23:40:25 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '554' + x-request-id: d3857b16-830a-4e18-8b3d-e757d24c64e0 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/b68f770b-78f3-40d9-8baa-f6c4a2170948 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/b68f770b-78f3-40d9-8baa-f6c4a2170948 + response: + body: + string: '{"dataFeedId":"b68f770b-78f3-40d9-8baa-f6c4a2170948","dataFeedName":"update","metrics":[{"metricId":"377a330f-c68d-4b11-a2a1-5bc9ca20e230","metricName":"cost","metricDisplayName":"display + cost","metricDescription":"the cost"},{"metricId":"1758b5c2-a59a-4820-ba72-309c37ee3b20","metricName":"revenue","metricDisplayName":"display + revenue","metricDescription":"the revenue"}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"display + category"},{"dimensionName":"city","dimensionDisplayName":"display city"}],"dataStartFrom":"2020-12-10T00:00:00Z","dataSourceType":"SqlServer","timestampColumn":"time","startOffsetInSeconds":1,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":"sumrollup","needRollup":"AlreadyRollup","fillMissingPointType":"CustomValue","fillMissingPointValue":2.0,"rollUpMethod":"Sum","rollUpColumns":[],"dataFeedDescription":"updated","stopRetryAfterInSeconds":1,"minRetryIntervalInSeconds":1,"maxConcurrency":1,"viewMode":"Public","admins":["krpratic@microsoft.com","yournamehere@microsoft.com"],"viewers":["updated"],"creator":"krpratic@microsoft.com","status":"Paused","createdTime":"2020-09-21T23:40:24Z","isAdmin":true,"actionLinkTemplate":"updated","dataSourceParameter":{"connectionString":"updated","query":"get + data"}}' + headers: + apim-request-id: 44a83e1b-6e74-4bb0-8f4c-21c5e6233619 + content-length: '1308' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:40:25 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '151' + x-request-id: 44a83e1b-6e74-4bb0-8f4c-21c5e6233619 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/b68f770b-78f3-40d9-8baa-f6c4a2170948 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/b68f770b-78f3-40d9-8baa-f6c4a2170948 + response: + body: + string: '' + headers: + apim-request-id: 8925fe0e-8736-4b7f-90fb-55c19cbecb61 + content-length: '0' + date: Mon, 21 Sep 2020 23:40:25 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '273' + x-request-id: 8925fe0e-8736-4b7f-90fb-55c19cbecb61 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/b68f770b-78f3-40d9-8baa-f6c4a2170948 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_update_data_feed_with_model.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_update_data_feed_with_model.yaml new file mode 100644 index 000000000000..e9007cd8e05f --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_update_data_feed_with_model.yaml @@ -0,0 +1,163 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "update5a9815e4", "dataFeedDescription": + "my first data feed", "granularityName": "Daily", "metrics": [{"metricName": + "cost", "metricDisplayName": "display cost", "metricDescription": "the cost"}, + {"metricName": "revenue", "metricDisplayName": "display revenue", "metricDescription": + "the revenue"}], "dimension": [{"dimensionName": "category", "dimensionDisplayName": + "display category"}, {"dimensionName": "city", "dimensionDisplayName": "display + city"}], "timestampColumn": "Timestamp", "dataStartFrom": "2019-10-01T00:00:00.000Z", + "startOffsetInSeconds": -1, "maxConcurrency": 0, "minRetryIntervalInSeconds": + -1, "stopRetryAfterInSeconds": -1, "needRollup": "NoRollup", "rollUpMethod": + "None", "fillMissingPointType": "SmartFilling", "viewMode": "Private", "admins": + ["yournamehere@microsoft.com"], "viewers": ["viewers"], "actionLinkTemplate": + "action link template", "dataSourceParameter": {"connectionString": "connectionstring", + "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '1301' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 01fdb076-fdd8-4349-876a-d9db7f21ce77 + content-length: '0' + date: Mon, 21 Sep 2020 23:40:27 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/1db11a9c-5f80-4d54-ae4e-e7a71f29da6a + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '379' + x-request-id: 01fdb076-fdd8-4349-876a-d9db7f21ce77 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/1db11a9c-5f80-4d54-ae4e-e7a71f29da6a + response: + body: + string: "{\"dataFeedId\":\"1db11a9c-5f80-4d54-ae4e-e7a71f29da6a\",\"dataFeedName\":\"update5a9815e4\",\"metrics\":[{\"metricId\":\"c75633a7-174b-4bae-9ca6-9aebe52faaac\",\"metricName\":\"cost\",\"metricDisplayName\":\"display + cost\",\"metricDescription\":\"the cost\"},{\"metricId\":\"193bdcaf-75d8-4d82-90f6-244cac786441\",\"metricName\":\"revenue\",\"metricDisplayName\":\"display + revenue\",\"metricDescription\":\"the revenue\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"display + category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"display + city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"Timestamp\",\"startOffsetInSeconds\":-1,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"SmartFilling\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"my + first data feed\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":0,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\",\"yournamehere@microsoft.com\"],\"viewers\":[\"viewers\"],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T23:40:27Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"action + link template\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 30bf0018-a0bb-47d1-b584-d603b3cd8a9c + content-length: '1622' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:40:27 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '130' + x-request-id: 30bf0018-a0bb-47d1-b584-d603b3cd8a9c + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/1db11a9c-5f80-4d54-ae4e-e7a71f29da6a +- request: + body: '{"dataSourceType": "SqlServer", "dataFeedName": "update", "dataFeedDescription": + "updated", "timestampColumn": "time", "dataStartFrom": "2020-12-10T00:00:00.000Z", + "startOffsetInSeconds": 1, "maxConcurrency": 1, "minRetryIntervalInSeconds": + 1, "stopRetryAfterInSeconds": 1, "needRollup": "AlreadyRollup", "rollUpMethod": + "Sum", "rollUpColumns": [], "allUpIdentification": "sumrollup", "fillMissingPointType": + "CustomValue", "fillMissingPointValue": 2.0, "viewMode": "Public", "admins": + ["krpratic@microsoft.com", "yournamehere@microsoft.com"], "viewers": ["updated"], + "status": "Paused", "actionLinkTemplate": "updated", "dataSourceParameter": + {"connectionString": "updated", "query": "get data"}}' + headers: + Accept: + - application/json + Content-Length: + - '697' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/1db11a9c-5f80-4d54-ae4e-e7a71f29da6a + response: + body: + string: '' + headers: + apim-request-id: f4b165b6-351d-4278-a9d3-8c006136fe8d + content-length: '0' + date: Mon, 21 Sep 2020 23:40:28 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '469' + x-request-id: f4b165b6-351d-4278-a9d3-8c006136fe8d + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/1db11a9c-5f80-4d54-ae4e-e7a71f29da6a +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/1db11a9c-5f80-4d54-ae4e-e7a71f29da6a + response: + body: + string: '{"dataFeedId":"1db11a9c-5f80-4d54-ae4e-e7a71f29da6a","dataFeedName":"update","metrics":[{"metricId":"c75633a7-174b-4bae-9ca6-9aebe52faaac","metricName":"cost","metricDisplayName":"display + cost","metricDescription":"the cost"},{"metricId":"193bdcaf-75d8-4d82-90f6-244cac786441","metricName":"revenue","metricDisplayName":"display + revenue","metricDescription":"the revenue"}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"display + category"},{"dimensionName":"city","dimensionDisplayName":"display city"}],"dataStartFrom":"2020-12-10T00:00:00Z","dataSourceType":"SqlServer","timestampColumn":"time","startOffsetInSeconds":1,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":"sumrollup","needRollup":"AlreadyRollup","fillMissingPointType":"CustomValue","fillMissingPointValue":2.0,"rollUpMethod":"Sum","rollUpColumns":[],"dataFeedDescription":"updated","stopRetryAfterInSeconds":1,"minRetryIntervalInSeconds":1,"maxConcurrency":1,"viewMode":"Public","admins":["krpratic@microsoft.com","yournamehere@microsoft.com"],"viewers":["updated"],"creator":"krpratic@microsoft.com","status":"Paused","createdTime":"2020-09-21T23:40:27Z","isAdmin":true,"actionLinkTemplate":"updated","dataSourceParameter":{"connectionString":"updated","query":"get + data"}}' + headers: + apim-request-id: a08ec921-121c-429e-af1c-96b989705e75 + content-length: '1308' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:40:28 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '140' + x-request-id: a08ec921-121c-429e-af1c-96b989705e75 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/1db11a9c-5f80-4d54-ae4e-e7a71f29da6a +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/1db11a9c-5f80-4d54-ae4e-e7a71f29da6a + response: + body: + string: '' + headers: + apim-request-id: 5e747c32-2c87-48cb-8146-c0f05e7c0a8d + content-length: '0' + date: Mon, 21 Sep 2020 23:40:29 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '259' + x-request-id: 5e747c32-2c87-48cb-8146-c0f05e7c0a8d + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/1db11a9c-5f80-4d54-ae4e-e7a71f29da6a +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_update_data_feed_with_model_and_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_update_data_feed_with_model_and_kwargs.yaml new file mode 100644 index 000000000000..1c8bf87e8df1 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_data_feeds_async.test_update_data_feed_with_model_and_kwargs.yaml @@ -0,0 +1,163 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "update65d91a64", "dataFeedDescription": + "my first data feed", "granularityName": "Daily", "metrics": [{"metricName": + "cost", "metricDisplayName": "display cost", "metricDescription": "the cost"}, + {"metricName": "revenue", "metricDisplayName": "display revenue", "metricDescription": + "the revenue"}], "dimension": [{"dimensionName": "category", "dimensionDisplayName": + "display category"}, {"dimensionName": "city", "dimensionDisplayName": "display + city"}], "timestampColumn": "Timestamp", "dataStartFrom": "2019-10-01T00:00:00.000Z", + "startOffsetInSeconds": -1, "maxConcurrency": 0, "minRetryIntervalInSeconds": + -1, "stopRetryAfterInSeconds": -1, "needRollup": "NoRollup", "rollUpMethod": + "None", "fillMissingPointType": "SmartFilling", "viewMode": "Private", "admins": + ["yournamehere@microsoft.com"], "viewers": ["viewers"], "actionLinkTemplate": + "action link template", "dataSourceParameter": {"connectionString": "connectionstring", + "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '1301' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: b91239d5-c560-4032-99d2-a5bcc188fad5 + content-length: '0' + date: Mon, 21 Sep 2020 23:40:29 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/5eb2e82f-81fa-452a-aba6-e2b0f0b27aed + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '348' + x-request-id: b91239d5-c560-4032-99d2-a5bcc188fad5 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/5eb2e82f-81fa-452a-aba6-e2b0f0b27aed + response: + body: + string: "{\"dataFeedId\":\"5eb2e82f-81fa-452a-aba6-e2b0f0b27aed\",\"dataFeedName\":\"update65d91a64\",\"metrics\":[{\"metricId\":\"524a0825-05c4-4522-9eef-00a5d5c0f7eb\",\"metricName\":\"cost\",\"metricDisplayName\":\"display + cost\",\"metricDescription\":\"the cost\"},{\"metricId\":\"14c4251c-ebc2-4cfd-b6ca-41136dac5fb5\",\"metricName\":\"revenue\",\"metricDisplayName\":\"display + revenue\",\"metricDescription\":\"the revenue\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"display + category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"display + city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"Timestamp\",\"startOffsetInSeconds\":-1,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"SmartFilling\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"my + first data feed\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":0,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\",\"yournamehere@microsoft.com\"],\"viewers\":[\"viewers\"],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T23:40:30Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"action + link template\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: b2252c01-9e3a-4646-a767-77b94b613309 + content-length: '1622' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:40:29 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '127' + x-request-id: b2252c01-9e3a-4646-a767-77b94b613309 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/5eb2e82f-81fa-452a-aba6-e2b0f0b27aed +- request: + body: '{"dataSourceType": "SqlServer", "dataFeedName": "updateMe", "dataFeedDescription": + "updateMe", "timestampColumn": "time", "dataStartFrom": "2020-12-10T00:00:00.000Z", + "startOffsetInSeconds": 1, "maxConcurrency": 1, "minRetryIntervalInSeconds": + 1, "stopRetryAfterInSeconds": 1, "needRollup": "AlreadyRollup", "rollUpMethod": + "Sum", "rollUpColumns": [], "allUpIdentification": "sumrollup", "fillMissingPointType": + "CustomValue", "fillMissingPointValue": 2.0, "viewMode": "Public", "admins": + ["krpratic@microsoft.com", "yournamehere@microsoft.com"], "viewers": ["updated"], + "status": "Paused", "actionLinkTemplate": "updated", "dataSourceParameter": + {"connectionString": "updated", "query": "get data"}}' + headers: + Accept: + - application/json + Content-Length: + - '700' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/5eb2e82f-81fa-452a-aba6-e2b0f0b27aed + response: + body: + string: '' + headers: + apim-request-id: c0377692-15a1-43c7-a888-48ee26f5903d + content-length: '0' + date: Mon, 21 Sep 2020 23:40:30 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '485' + x-request-id: c0377692-15a1-43c7-a888-48ee26f5903d + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/5eb2e82f-81fa-452a-aba6-e2b0f0b27aed +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/5eb2e82f-81fa-452a-aba6-e2b0f0b27aed + response: + body: + string: '{"dataFeedId":"5eb2e82f-81fa-452a-aba6-e2b0f0b27aed","dataFeedName":"updateMe","metrics":[{"metricId":"524a0825-05c4-4522-9eef-00a5d5c0f7eb","metricName":"cost","metricDisplayName":"display + cost","metricDescription":"the cost"},{"metricId":"14c4251c-ebc2-4cfd-b6ca-41136dac5fb5","metricName":"revenue","metricDisplayName":"display + revenue","metricDescription":"the revenue"}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"display + category"},{"dimensionName":"city","dimensionDisplayName":"display city"}],"dataStartFrom":"2020-12-10T00:00:00Z","dataSourceType":"SqlServer","timestampColumn":"time","startOffsetInSeconds":1,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":"sumrollup","needRollup":"AlreadyRollup","fillMissingPointType":"CustomValue","fillMissingPointValue":2.0,"rollUpMethod":"Sum","rollUpColumns":[],"dataFeedDescription":"updateMe","stopRetryAfterInSeconds":1,"minRetryIntervalInSeconds":1,"maxConcurrency":1,"viewMode":"Public","admins":["krpratic@microsoft.com","yournamehere@microsoft.com"],"viewers":["updated"],"creator":"krpratic@microsoft.com","status":"Paused","createdTime":"2020-09-21T23:40:30Z","isAdmin":true,"actionLinkTemplate":"updated","dataSourceParameter":{"connectionString":"updated","query":"get + data"}}' + headers: + apim-request-id: 3f6c2327-b893-45b3-9935-99fbbe193c9e + content-length: '1311' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:40:30 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '132' + x-request-id: 3f6c2327-b893-45b3-9935-99fbbe193c9e + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/5eb2e82f-81fa-452a-aba6-e2b0f0b27aed +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/5eb2e82f-81fa-452a-aba6-e2b0f0b27aed + response: + body: + string: '' + headers: + apim-request-id: 6db999f0-6d5f-4d56-98e5-9ff04044f69b + content-length: '0' + date: Mon, 21 Sep 2020 23:40:32 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '268' + x-request-id: 6db999f0-6d5f-4d56-98e5-9ff04044f69b + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/5eb2e82f-81fa-452a-aba6-e2b0f0b27aed +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_create_email_hook.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_create_email_hook.yaml new file mode 100644 index 000000000000..9d69881461af --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_create_email_hook.yaml @@ -0,0 +1,108 @@ +interactions: +- request: + body: '{"hookType": "Email", "hookName": "testemailhookasync26461d46", "description": + "my email hook", "externalLink": "external link", "hookParameter": {"toList": + ["yournamehere@microsoft.com"]}}' + headers: + Accept: + - application/json + Content-Length: + - '189' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: b8c4f4c4-b9c2-4ce8-a05d-9092d579e224 + content-length: '0' + date: Wed, 09 Sep 2020 22:37:07 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/8b42d85b-aa8a-44fd-8ff6-5ccca934d2ec + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '423' + x-request-id: b8c4f4c4-b9c2-4ce8-a05d-9092d579e224 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/8b42d85b-aa8a-44fd-8ff6-5ccca934d2ec + response: + body: + string: '{"hookId":"8b42d85b-aa8a-44fd-8ff6-5ccca934d2ec","hookName":"testemailhookasync26461d46","hookType":"Email","externalLink":"external + link","description":"my email hook","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["yournamehere@microsoft.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: e6ce4b9e-a0e6-4bf2-b293-3f296c6d86c3 + content-length: '292' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:37:07 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '132' + x-request-id: e6ce4b9e-a0e6-4bf2-b293-3f296c6d86c3 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/8b42d85b-aa8a-44fd-8ff6-5ccca934d2ec +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/8b42d85b-aa8a-44fd-8ff6-5ccca934d2ec + response: + body: + string: '' + headers: + apim-request-id: 66951749-b71c-4223-923a-1eccd0ff0595 + content-length: '0' + date: Wed, 09 Sep 2020 22:37:08 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '147' + x-request-id: 66951749-b71c-4223-923a-1eccd0ff0595 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/8b42d85b-aa8a-44fd-8ff6-5ccca934d2ec +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/8b42d85b-aa8a-44fd-8ff6-5ccca934d2ec + response: + body: + string: '{"code":"ERROR_INVALID_PARAMETER","message":"hookId is invalid."}' + headers: + apim-request-id: e0fc6043-d8de-470c-bebb-82a4f80e10a3 + content-length: '65' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:37:08 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '46' + x-request-id: e0fc6043-d8de-470c-bebb-82a4f80e10a3 + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/8b42d85b-aa8a-44fd-8ff6-5ccca934d2ec +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_create_web_hook.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_create_web_hook.yaml new file mode 100644 index 000000000000..a477add17f7e --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_create_web_hook.yaml @@ -0,0 +1,108 @@ +interactions: +- request: + body: '{"hookType": "Webhook", "hookName": "testwebhookasyncec6c1c7c", "description": + "my web hook", "externalLink": "external link", "hookParameter": {"endpoint": + "https://httpbin.org/post"}}' + headers: + Accept: + - application/json + Content-Length: + - '185' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: ffdd5e18-2c1b-4f34-9f8e-0a9f5eaf923e + content-length: '0' + date: Wed, 09 Sep 2020 22:37:17 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/1fc44190-a616-4974-a712-5874b519bcfc + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '648' + x-request-id: ffdd5e18-2c1b-4f34-9f8e-0a9f5eaf923e + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/1fc44190-a616-4974-a712-5874b519bcfc + response: + body: + string: '{"hookId":"1fc44190-a616-4974-a712-5874b519bcfc","hookName":"testwebhookasyncec6c1c7c","hookType":"Webhook","externalLink":"external + link","description":"my web hook","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"","password":"","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: 9b6944fe-2bd3-419d-a76a-1bbe7ac49131 + content-length: '345' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:37:17 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '124' + x-request-id: 9b6944fe-2bd3-419d-a76a-1bbe7ac49131 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/1fc44190-a616-4974-a712-5874b519bcfc +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/1fc44190-a616-4974-a712-5874b519bcfc + response: + body: + string: '' + headers: + apim-request-id: 4bb77eef-f418-4c81-9d48-a2d82bf11765 + content-length: '0' + date: Wed, 09 Sep 2020 22:37:17 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '162' + x-request-id: 4bb77eef-f418-4c81-9d48-a2d82bf11765 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/1fc44190-a616-4974-a712-5874b519bcfc +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/1fc44190-a616-4974-a712-5874b519bcfc + response: + body: + string: '{"code":"ERROR_INVALID_PARAMETER","message":"hookId is invalid."}' + headers: + apim-request-id: 4974e734-2fbb-40e8-85ba-60f0af62e943 + content-length: '65' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:37:18 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '42' + x-request-id: 4974e734-2fbb-40e8-85ba-60f0af62e943 + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/1fc44190-a616-4974-a712-5874b519bcfc +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_list_hooks.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_list_hooks.yaml new file mode 100644 index 000000000000..cdc3a4a79f01 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_list_hooks.yaml @@ -0,0 +1,29 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '{"value":[{"hookId":"d25286fb-98b6-48b8-9a05-712871c0d4e1","hookName":"emailhook","hookType":"Email","externalLink":"","description":"","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["krpratic@microsoft.com"],"ccList":null,"bccList":null}},{"hookId":"3af3e00f-adf4-40eb-b01f-4cc12f58db45","hookName":"updatedWebHook1","hookType":"Webhook","externalLink":"my + external link","description":"","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"sdfsd","password":"","headers":{},"certificateKey":"","certificatePassword":""}},{"hookId":"b1befa30-37a6-4f4e-b195-c91788d2af9d","hookName":"web_hook","hookType":"Webhook","externalLink":"my + external link","description":"jadg","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"fsdgsd","password":"","headers":{},"certificateKey":"","certificatePassword":""}}],"@nextLink":null}' + headers: + apim-request-id: 5eef0c4f-2c8f-45f7-b931-b5e5f8720b87 + content-length: '940' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 01:48:16 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '438' + x-request-id: 5eef0c4f-2c8f-45f7-b931-b5e5f8720b87 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_email_hook_by_resetting_properties.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_email_hook_by_resetting_properties.yaml new file mode 100644 index 000000000000..5032fbcbb71f --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_email_hook_by_resetting_properties.yaml @@ -0,0 +1,136 @@ +interactions: +- request: + body: '{"hookType": "Email", "hookName": "testhook40a81a22", "description": "my + email hook", "externalLink": "external link", "hookParameter": {"toList": ["yournamehere@microsoft.com"]}}' + headers: + Accept: + - application/json + Content-Length: + - '179' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: 0d158994-6b97-4ada-adf0-0714bfd7f8c9 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:29 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/8f2169df-c35b-4a42-93dd-7e43247a54b1 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '514' + x-request-id: 0d158994-6b97-4ada-adf0-0714bfd7f8c9 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/8f2169df-c35b-4a42-93dd-7e43247a54b1 + response: + body: + string: '{"hookId":"8f2169df-c35b-4a42-93dd-7e43247a54b1","hookName":"testhook40a81a22","hookType":"Email","externalLink":"external + link","description":"my email hook","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["yournamehere@microsoft.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: ddc9c934-5efb-4efd-bac2-555aa3f45254 + content-length: '282' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:29 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '259' + x-request-id: ddc9c934-5efb-4efd-bac2-555aa3f45254 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/8f2169df-c35b-4a42-93dd-7e43247a54b1 +- request: + body: '{"hookName": "reset", "description": null, "externalLink": null}' + headers: + Accept: + - application/json + Content-Length: + - '64' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/8f2169df-c35b-4a42-93dd-7e43247a54b1 + response: + body: + string: '' + headers: + apim-request-id: 2ce4ccbf-e33f-4745-bf2c-a8543e087232 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:30 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '174' + x-request-id: 2ce4ccbf-e33f-4745-bf2c-a8543e087232 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/8f2169df-c35b-4a42-93dd-7e43247a54b1 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/8f2169df-c35b-4a42-93dd-7e43247a54b1 + response: + body: + string: '{"hookId":"8f2169df-c35b-4a42-93dd-7e43247a54b1","hookName":"reset","hookType":"Email","externalLink":"external + link","description":"my email hook","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["yournamehere@microsoft.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: 40f2cd55-025e-4066-a4a2-ad59c72b4d84 + content-length: '271' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:30 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '221' + x-request-id: 40f2cd55-025e-4066-a4a2-ad59c72b4d84 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/8f2169df-c35b-4a42-93dd-7e43247a54b1 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/8f2169df-c35b-4a42-93dd-7e43247a54b1 + response: + body: + string: '' + headers: + apim-request-id: 8225b8f8-8cd4-416e-9724-4029732b20b0 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:30 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '157' + x-request-id: 8225b8f8-8cd4-416e-9724-4029732b20b0 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/8f2169df-c35b-4a42-93dd-7e43247a54b1 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_email_hook_with_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_email_hook_with_kwargs.yaml new file mode 100644 index 000000000000..378a6004235c --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_email_hook_with_kwargs.yaml @@ -0,0 +1,136 @@ +interactions: +- request: + body: '{"hookType": "Email", "hookName": "testhook23951511", "description": "my + email hook", "externalLink": "external link", "hookParameter": {"toList": ["yournamehere@microsoft.com"]}}' + headers: + Accept: + - application/json + Content-Length: + - '179' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: 2d97bf75-a20d-447f-a4e5-8c770b349159 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:31 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/42d0dafe-594c-44b3-94c9-100d2f25beab + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '271' + x-request-id: 2d97bf75-a20d-447f-a4e5-8c770b349159 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/42d0dafe-594c-44b3-94c9-100d2f25beab + response: + body: + string: '{"hookId":"42d0dafe-594c-44b3-94c9-100d2f25beab","hookName":"testhook23951511","hookType":"Email","externalLink":"external + link","description":"my email hook","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["yournamehere@microsoft.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: 11e77035-02b8-40c2-b563-14a57cbdd595 + content-length: '282' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:32 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '132' + x-request-id: 11e77035-02b8-40c2-b563-14a57cbdd595 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/42d0dafe-594c-44b3-94c9-100d2f25beab +- request: + body: '{"hookName": "update", "description": "update", "externalLink": "update", + "hookType": "Email", "hookParameter": {"toList": ["myemail@m.com"]}}' + headers: + Accept: + - application/json + Content-Length: + - '142' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/42d0dafe-594c-44b3-94c9-100d2f25beab + response: + body: + string: '' + headers: + apim-request-id: 900f730f-b3ad-4135-bcbd-5a29bf7f25c0 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:32 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '274' + x-request-id: 900f730f-b3ad-4135-bcbd-5a29bf7f25c0 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/42d0dafe-594c-44b3-94c9-100d2f25beab +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/42d0dafe-594c-44b3-94c9-100d2f25beab + response: + body: + string: '{"hookId":"42d0dafe-594c-44b3-94c9-100d2f25beab","hookName":"update","hookType":"Email","externalLink":"update","description":"update","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["myemail@m.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: 93093701-65e1-43d6-805d-80e8932ddd97 + content-length: '245' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:32 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '149' + x-request-id: 93093701-65e1-43d6-805d-80e8932ddd97 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/42d0dafe-594c-44b3-94c9-100d2f25beab +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/42d0dafe-594c-44b3-94c9-100d2f25beab + response: + body: + string: '' + headers: + apim-request-id: 33977d5e-3de6-448f-a044-1be9edfa2fe6 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:33 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '153' + x-request-id: 33977d5e-3de6-448f-a044-1be9edfa2fe6 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/42d0dafe-594c-44b3-94c9-100d2f25beab +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_email_hook_with_model.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_email_hook_with_model.yaml new file mode 100644 index 000000000000..b0a09607f1bc --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_email_hook_with_model.yaml @@ -0,0 +1,137 @@ +interactions: +- request: + body: '{"hookType": "Email", "hookName": "testwebhooke621493", "description": + "my email hook", "externalLink": "external link", "hookParameter": {"toList": + ["yournamehere@microsoft.com"]}}' + headers: + Accept: + - application/json + Content-Length: + - '181' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: ed6eadbb-28fa-4214-b996-3c4846ddd829 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:34 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/39dba227-6f4f-47d6-aa41-922d22a351e3 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '268' + x-request-id: ed6eadbb-28fa-4214-b996-3c4846ddd829 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/39dba227-6f4f-47d6-aa41-922d22a351e3 + response: + body: + string: '{"hookId":"39dba227-6f4f-47d6-aa41-922d22a351e3","hookName":"testwebhooke621493","hookType":"Email","externalLink":"external + link","description":"my email hook","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["yournamehere@microsoft.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: 256c35a9-4194-4830-9843-969b69ec424b + content-length: '284' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:34 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '122' + x-request-id: 256c35a9-4194-4830-9843-969b69ec424b + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/39dba227-6f4f-47d6-aa41-922d22a351e3 +- request: + body: '{"hookType": "Email", "hookName": "update", "description": "update", "externalLink": + "update", "hookParameter": {"toList": ["myemail@m.com"]}}' + headers: + Accept: + - application/json + Content-Length: + - '142' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/39dba227-6f4f-47d6-aa41-922d22a351e3 + response: + body: + string: '' + headers: + apim-request-id: 9002bee6-f734-432f-95d2-352eef5418a6 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:34 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '260' + x-request-id: 9002bee6-f734-432f-95d2-352eef5418a6 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/39dba227-6f4f-47d6-aa41-922d22a351e3 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/39dba227-6f4f-47d6-aa41-922d22a351e3 + response: + body: + string: '{"hookId":"39dba227-6f4f-47d6-aa41-922d22a351e3","hookName":"update","hookType":"Email","externalLink":"update","description":"update","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["myemail@m.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: 001508c3-8ca6-4291-b5c1-311698fdf6ae + content-length: '245' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:35 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '133' + x-request-id: 001508c3-8ca6-4291-b5c1-311698fdf6ae + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/39dba227-6f4f-47d6-aa41-922d22a351e3 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/39dba227-6f4f-47d6-aa41-922d22a351e3 + response: + body: + string: '' + headers: + apim-request-id: ed7f3f4d-58ae-42a4-8716-494478feec52 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:35 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '154' + x-request-id: ed7f3f4d-58ae-42a4-8716-494478feec52 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/39dba227-6f4f-47d6-aa41-922d22a351e3 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_email_hook_with_model_and_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_email_hook_with_model_and_kwargs.yaml new file mode 100644 index 000000000000..e724255982db --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_email_hook_with_model_and_kwargs.yaml @@ -0,0 +1,136 @@ +interactions: +- request: + body: '{"hookType": "Email", "hookName": "testhookb281913", "description": "my + email hook", "externalLink": "external link", "hookParameter": {"toList": ["yournamehere@microsoft.com"]}}' + headers: + Accept: + - application/json + Content-Length: + - '178' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: c9dfb680-9b38-498c-92dd-271ecae9a4f9 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:36 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/c1b5f3da-d845-4984-a537-284267bc6ecb + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '328' + x-request-id: c9dfb680-9b38-498c-92dd-271ecae9a4f9 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/c1b5f3da-d845-4984-a537-284267bc6ecb + response: + body: + string: '{"hookId":"c1b5f3da-d845-4984-a537-284267bc6ecb","hookName":"testhookb281913","hookType":"Email","externalLink":"external + link","description":"my email hook","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["yournamehere@microsoft.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: 2d1bd749-0e8e-48cb-9eda-4bc04ce092c2 + content-length: '281' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:36 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '143' + x-request-id: 2d1bd749-0e8e-48cb-9eda-4bc04ce092c2 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/c1b5f3da-d845-4984-a537-284267bc6ecb +- request: + body: '{"hookType": "Email", "hookName": "update", "description": "update", "externalLink": + "update", "hookParameter": {"toList": ["myemail@m.com"]}}' + headers: + Accept: + - application/json + Content-Length: + - '142' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/c1b5f3da-d845-4984-a537-284267bc6ecb + response: + body: + string: '' + headers: + apim-request-id: 9cbea505-4d21-4557-8761-576a0cb8f541 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:37 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '278' + x-request-id: 9cbea505-4d21-4557-8761-576a0cb8f541 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/c1b5f3da-d845-4984-a537-284267bc6ecb +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/c1b5f3da-d845-4984-a537-284267bc6ecb + response: + body: + string: '{"hookId":"c1b5f3da-d845-4984-a537-284267bc6ecb","hookName":"update","hookType":"Email","externalLink":"update","description":"update","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["myemail@m.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: 63280d29-c03e-455d-bd59-63ba7e7cfec5 + content-length: '245' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:37 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '136' + x-request-id: 63280d29-c03e-455d-bd59-63ba7e7cfec5 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/c1b5f3da-d845-4984-a537-284267bc6ecb +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/c1b5f3da-d845-4984-a537-284267bc6ecb + response: + body: + string: '' + headers: + apim-request-id: 657dec6c-39c1-4612-a68d-269dbe0b562a + content-length: '0' + date: Mon, 21 Sep 2020 23:44:37 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '159' + x-request-id: 657dec6c-39c1-4612-a68d-269dbe0b562a + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/c1b5f3da-d845-4984-a537-284267bc6ecb +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_web_hook_by_resetting_properties.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_web_hook_by_resetting_properties.yaml new file mode 100644 index 000000000000..e11833e82324 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_web_hook_by_resetting_properties.yaml @@ -0,0 +1,139 @@ +interactions: +- request: + body: '{"hookType": "Webhook", "hookName": "testhooke691958", "description": "my + web hook", "externalLink": "external link", "hookParameter": {"endpoint": "https://httpbin.org/post", + "username": "krista", "password": "123"}}' + headers: + Accept: + - application/json + Content-Length: + - '217' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: 46f97846-3e79-4746-bcbf-3ad541ac7469 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:39 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/66d1cb5b-adbd-4a3c-8ded-01aadfcbdb82 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '623' + x-request-id: 46f97846-3e79-4746-bcbf-3ad541ac7469 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/66d1cb5b-adbd-4a3c-8ded-01aadfcbdb82 + response: + body: + string: '{"hookId":"66d1cb5b-adbd-4a3c-8ded-01aadfcbdb82","hookName":"testhooke691958","hookType":"Webhook","externalLink":"external + link","description":"my web hook","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"krista","password":"123","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: 385ba926-a663-46f4-b2d8-c9fb3aac58e3 + content-length: '345' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '130' + x-request-id: 385ba926-a663-46f4-b2d8-c9fb3aac58e3 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/66d1cb5b-adbd-4a3c-8ded-01aadfcbdb82 +- request: + body: '{"hookName": "reset", "description": null, "externalLink": null, "hookType": + "Webhook", "hookParameter": {"endpoint": "https://httpbin.org/post", "username": + "myusername", "password": null}}' + headers: + Accept: + - application/json + Content-Length: + - '190' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/66d1cb5b-adbd-4a3c-8ded-01aadfcbdb82 + response: + body: + string: '' + headers: + apim-request-id: 1556b95a-80df-48a7-87d1-019bbc649f2d + content-length: '0' + date: Mon, 21 Sep 2020 23:44:40 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '603' + x-request-id: 1556b95a-80df-48a7-87d1-019bbc649f2d + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/66d1cb5b-adbd-4a3c-8ded-01aadfcbdb82 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/66d1cb5b-adbd-4a3c-8ded-01aadfcbdb82 + response: + body: + string: '{"hookId":"66d1cb5b-adbd-4a3c-8ded-01aadfcbdb82","hookName":"reset","hookType":"Webhook","externalLink":"external + link","description":"my web hook","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"myusername","password":"","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: 09901c97-238f-412c-8e98-d2ca41efdf21 + content-length: '336' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:40 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '131' + x-request-id: 09901c97-238f-412c-8e98-d2ca41efdf21 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/66d1cb5b-adbd-4a3c-8ded-01aadfcbdb82 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/66d1cb5b-adbd-4a3c-8ded-01aadfcbdb82 + response: + body: + string: '' + headers: + apim-request-id: 57fb1562-963a-4e30-880b-31e7c0ff7b3a + content-length: '0' + date: Mon, 21 Sep 2020 23:44:42 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '157' + x-request-id: 57fb1562-963a-4e30-880b-31e7c0ff7b3a + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/66d1cb5b-adbd-4a3c-8ded-01aadfcbdb82 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_web_hook_with_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_web_hook_with_kwargs.yaml new file mode 100644 index 000000000000..98c5170da705 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_web_hook_with_kwargs.yaml @@ -0,0 +1,138 @@ +interactions: +- request: + body: '{"hookType": "Webhook", "hookName": "testwebhookfabf1447", "description": + "my web hook", "externalLink": "external link", "hookParameter": {"endpoint": + "https://httpbin.org/post", "username": "krista", "password": "123"}}' + headers: + Accept: + - application/json + Content-Length: + - '221' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: 4188751a-d028-4923-8408-caa07c41034c + content-length: '0' + date: Mon, 21 Sep 2020 23:44:43 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/278415a3-43a4-4c23-a4e3-70109afa5a0c + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '674' + x-request-id: 4188751a-d028-4923-8408-caa07c41034c + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/278415a3-43a4-4c23-a4e3-70109afa5a0c + response: + body: + string: '{"hookId":"278415a3-43a4-4c23-a4e3-70109afa5a0c","hookName":"testwebhookfabf1447","hookType":"Webhook","externalLink":"external + link","description":"my web hook","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"krista","password":"123","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: 0a6ad1ea-7cc9-44c3-a3a8-f6b60c8469f6 + content-length: '349' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:44 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '159' + x-request-id: 0a6ad1ea-7cc9-44c3-a3a8-f6b60c8469f6 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/278415a3-43a4-4c23-a4e3-70109afa5a0c +- request: + body: '{"hookName": "update", "description": "update", "externalLink": "update", + "hookType": "Webhook", "hookParameter": {"endpoint": "https://httpbin.org/post", + "username": "myusername", "password": "password"}}' + headers: + Accept: + - application/json + Content-Length: + - '205' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/278415a3-43a4-4c23-a4e3-70109afa5a0c + response: + body: + string: '' + headers: + apim-request-id: c2d6b1f5-67a0-497c-840c-3184d8d69429 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:44 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '598' + x-request-id: c2d6b1f5-67a0-497c-840c-3184d8d69429 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/278415a3-43a4-4c23-a4e3-70109afa5a0c +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/278415a3-43a4-4c23-a4e3-70109afa5a0c + response: + body: + string: '{"hookId":"278415a3-43a4-4c23-a4e3-70109afa5a0c","hookName":"update","hookType":"Webhook","externalLink":"update","description":"update","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"myusername","password":"password","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: bf622488-25af-4b6e-a726-cb6404d16993 + content-length: '333' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:45 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '144' + x-request-id: bf622488-25af-4b6e-a726-cb6404d16993 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/278415a3-43a4-4c23-a4e3-70109afa5a0c +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/278415a3-43a4-4c23-a4e3-70109afa5a0c + response: + body: + string: '' + headers: + apim-request-id: 9067b6f7-4820-474d-a280-884500f33460 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:45 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '151' + x-request-id: 9067b6f7-4820-474d-a280-884500f33460 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/278415a3-43a4-4c23-a4e3-70109afa5a0c +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_web_hook_with_model.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_web_hook_with_model.yaml new file mode 100644 index 000000000000..3186812a2c3c --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_web_hook_with_model.yaml @@ -0,0 +1,139 @@ +interactions: +- request: + body: '{"hookType": "Webhook", "hookName": "testwebhooke65613c9", "description": + "my web hook", "externalLink": "external link", "hookParameter": {"endpoint": + "https://httpbin.org/post", "username": "krista", "password": "123"}}' + headers: + Accept: + - application/json + Content-Length: + - '221' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: ee307c02-1537-41a4-bbcf-3c1885e00228 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:46 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/b4053948-d3f0-41d6-8832-d9c75e11e8d3 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '640' + x-request-id: ee307c02-1537-41a4-bbcf-3c1885e00228 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/b4053948-d3f0-41d6-8832-d9c75e11e8d3 + response: + body: + string: '{"hookId":"b4053948-d3f0-41d6-8832-d9c75e11e8d3","hookName":"testwebhooke65613c9","hookType":"Webhook","externalLink":"external + link","description":"my web hook","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"krista","password":"123","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: 496e56ac-2f15-4f40-9569-98d96de21db1 + content-length: '349' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:46 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '133' + x-request-id: 496e56ac-2f15-4f40-9569-98d96de21db1 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/b4053948-d3f0-41d6-8832-d9c75e11e8d3 +- request: + body: '{"hookType": "Webhook", "hookName": "update", "description": "update", + "externalLink": "update", "hookParameter": {"endpoint": "https://httpbin.org/post", + "username": "myusername", "password": "password", "certificateKey": "", "certificatePassword": + ""}}' + headers: + Accept: + - application/json + Content-Length: + - '254' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/b4053948-d3f0-41d6-8832-d9c75e11e8d3 + response: + body: + string: '' + headers: + apim-request-id: 021c52bb-1f9c-4857-881d-f79e5fb52fc2 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:48 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '631' + x-request-id: 021c52bb-1f9c-4857-881d-f79e5fb52fc2 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/b4053948-d3f0-41d6-8832-d9c75e11e8d3 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/b4053948-d3f0-41d6-8832-d9c75e11e8d3 + response: + body: + string: '{"hookId":"b4053948-d3f0-41d6-8832-d9c75e11e8d3","hookName":"update","hookType":"Webhook","externalLink":"update","description":"update","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"myusername","password":"password","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: 2ffac8e3-2b5e-4b9e-a1ef-4a566933a56b + content-length: '333' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:48 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '131' + x-request-id: 2ffac8e3-2b5e-4b9e-a1ef-4a566933a56b + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/b4053948-d3f0-41d6-8832-d9c75e11e8d3 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/b4053948-d3f0-41d6-8832-d9c75e11e8d3 + response: + body: + string: '' + headers: + apim-request-id: 32457b89-06c6-449f-8b1d-ea8bcc0a0501 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:48 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '150' + x-request-id: 32457b89-06c6-449f-8b1d-ea8bcc0a0501 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/b4053948-d3f0-41d6-8832-d9c75e11e8d3 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_web_hook_with_model_and_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_web_hook_with_model_and_kwargs.yaml new file mode 100644 index 000000000000..09e98ae10b17 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_hooks_async.test_update_web_hook_with_model_and_kwargs.yaml @@ -0,0 +1,139 @@ +interactions: +- request: + body: '{"hookType": "Webhook", "hookName": "testwebhookda6e1849", "description": + "my web hook", "externalLink": "external link", "hookParameter": {"endpoint": + "https://httpbin.org/post", "username": "krista", "password": "123"}}' + headers: + Accept: + - application/json + Content-Length: + - '221' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: ed9947db-53af-4dd7-9ad0-15ca86abfdb6 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:49 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/9c34ed33-b712-4c9b-8f7f-2aa6a9a6ccfb + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '595' + x-request-id: ed9947db-53af-4dd7-9ad0-15ca86abfdb6 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/9c34ed33-b712-4c9b-8f7f-2aa6a9a6ccfb + response: + body: + string: '{"hookId":"9c34ed33-b712-4c9b-8f7f-2aa6a9a6ccfb","hookName":"testwebhookda6e1849","hookType":"Webhook","externalLink":"external + link","description":"my web hook","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"krista","password":"123","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: fd82677d-28e1-4231-818c-856e895d126f + content-length: '349' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:49 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '195' + x-request-id: fd82677d-28e1-4231-818c-856e895d126f + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/9c34ed33-b712-4c9b-8f7f-2aa6a9a6ccfb +- request: + body: '{"hookType": "Webhook", "hookName": "update", "description": "updateMe", + "externalLink": "update", "hookParameter": {"endpoint": "https://httpbin.org/post", + "username": "myusername", "password": "password", "certificateKey": "", "certificatePassword": + ""}}' + headers: + Accept: + - application/json + Content-Length: + - '256' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/9c34ed33-b712-4c9b-8f7f-2aa6a9a6ccfb + response: + body: + string: '' + headers: + apim-request-id: e050ea7c-2b31-4694-b4b0-359af58492db + content-length: '0' + date: Mon, 21 Sep 2020 23:44:50 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '692' + x-request-id: e050ea7c-2b31-4694-b4b0-359af58492db + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/9c34ed33-b712-4c9b-8f7f-2aa6a9a6ccfb +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/9c34ed33-b712-4c9b-8f7f-2aa6a9a6ccfb + response: + body: + string: '{"hookId":"9c34ed33-b712-4c9b-8f7f-2aa6a9a6ccfb","hookName":"update","hookType":"Webhook","externalLink":"update","description":"updateMe","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"myusername","password":"password","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: 559478d5-c827-4b11-8a96-e21a19add364 + content-length: '335' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:44:50 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '129' + x-request-id: 559478d5-c827-4b11-8a96-e21a19add364 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/9c34ed33-b712-4c9b-8f7f-2aa6a9a6ccfb +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/9c34ed33-b712-4c9b-8f7f-2aa6a9a6ccfb + response: + body: + string: '' + headers: + apim-request-id: ba9ed676-fd36-43a2-9758-c35899ab1291 + content-length: '0' + date: Mon, 21 Sep 2020 23:44:51 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '152' + x-request-id: ba9ed676-fd36-43a2-9758-c35899ab1291 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/hooks/9c34ed33-b712-4c9b-8f7f-2aa6a9a6ccfb +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_create_detection_config_with_multiple_series_and_group_conditions.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_create_detection_config_with_multiple_series_and_group_conditions.yaml new file mode 100644 index 000000000000..4e360a237fb6 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_create_detection_config_with_multiple_series_and_group_conditions.yaml @@ -0,0 +1,171 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "datafeedforconfigasync8d813149", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '786' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 99bbbb5f-f3c8-4aaa-95df-e4643eeb9e28 + content-length: '0' + date: Wed, 09 Sep 2020 22:37:05 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/cf6c9853-6494-4e4c-9b6b-0fdc672cac53 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '315' + x-request-id: 99bbbb5f-f3c8-4aaa-95df-e4643eeb9e28 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/cf6c9853-6494-4e4c-9b6b-0fdc672cac53 + response: + body: + string: "{\"dataFeedId\":\"cf6c9853-6494-4e4c-9b6b-0fdc672cac53\",\"dataFeedName\":\"datafeedforconfigasync8d813149\",\"metrics\":[{\"metricId\":\"69b4c5a2-5d80-42b5-b532-004fc5b4c81f\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"4bf00683-626c-45ee-bee2-ee3436e449f4\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-09T22:37:05Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 69ddca60-fc81-453d-bb8c-ce82a2b7fb78 + content-length: '1504' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:37:06 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '214' + x-request-id: 69ddca60-fc81-453d-bb8c-ce82a2b7fb78 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/cf6c9853-6494-4e4c-9b6b-0fdc672cac53 +- request: + body: '{"name": "multipledetectionconfigsasync8d813149", "description": "My test + metric anomaly detection configuration", "metricId": "69b4c5a2-5d80-42b5-b532-004fc5b4c81f", + "wholeMetricConfiguration": {"conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 50.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 50, "minRatio": 50.0}}, "hardThresholdCondition": {"lowerBound": + 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": {"changePercentage": + 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Sao Paulo"}}, "conditionOperator": "AND", + "smartDetectionCondition": {"sensitivity": 63.0, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 1, "minRatio": 100.0}}, "hardThresholdCondition": + {"lowerBound": 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": + {"changePercentage": 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, {"group": + {"dimension": {"city": "Seoul"}}, "conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "Shenzhen", "category": "Jewelry"}}, "conditionOperator": + "AND", "smartDetectionCondition": {"sensitivity": 63.0, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 1, "minRatio": 100.0}}, "hardThresholdCondition": + {"lowerBound": 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": + {"changePercentage": 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, {"series": + {"dimension": {"city": "Osaka", "category": "Cell Phones"}}, "conditionOperator": + "AND", "smartDetectionCondition": {"sensitivity": 63.0, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 1, "minRatio": 100.0}}}]}' + headers: + Accept: + - application/json + Content-Length: + - '2412' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: fef0b10a-ba32-4c5c-ab3b-27afe255c390 + content-length: '0' + date: Wed, 09 Sep 2020 22:37:06 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/fd4bf8e1-770c-418b-b5c7-2e2a6674fd92 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '173' + x-request-id: fef0b10a-ba32-4c5c-ab3b-27afe255c390 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/fd4bf8e1-770c-418b-b5c7-2e2a6674fd92 + response: + body: + string: '{"anomalyDetectionConfigurationId":"fd4bf8e1-770c-418b-b5c7-2e2a6674fd92","name":"multipledetectionconfigsasync8d813149","description":"My + test metric anomaly detection configuration","metricId":"69b4c5a2-5d80-42b5-b532-004fc5b4c81f","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},{"group":{"dimension":{"city":"Seoul"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"a33d0520a1b24768f7cafd9cc0979c51","dimension":{"city":"Shenzhen","category":"Jewelry"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},{"series":{"seriesId":"8e45a5a45088ead52653145a94267f5a","dimension":{"city":"Osaka","category":"Cell + Phones"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]}' + headers: + apim-request-id: 34e9d350-b4c2-4b21-bd0e-fc85404a4089 + content-length: '2359' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:37:06 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '78' + x-request-id: 34e9d350-b4c2-4b21-bd0e-fc85404a4089 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/fd4bf8e1-770c-418b-b5c7-2e2a6674fd92 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/cf6c9853-6494-4e4c-9b6b-0fdc672cac53 + response: + body: + string: '' + headers: + apim-request-id: a15a8a7f-bf8e-4ab6-be5c-7a52d6bc58b3 + content-length: '0' + date: Wed, 09 Sep 2020 22:37:07 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '271' + x-request-id: a15a8a7f-bf8e-4ab6-be5c-7a52d6bc58b3 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/cf6c9853-6494-4e4c-9b6b-0fdc672cac53 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_create_metric_anomaly_detection_config_with_series_and_group_conditions.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_create_metric_anomaly_detection_config_with_series_and_group_conditions.yaml new file mode 100644 index 000000000000..faa7eaf1bfdc --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_create_metric_anomaly_detection_config_with_series_and_group_conditions.yaml @@ -0,0 +1,156 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "adconfiggetasyncbad833b1", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '780' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: bfb3f44e-a4fc-4cd1-9fbe-62c30e86d417 + content-length: '0' + date: Wed, 09 Sep 2020 22:37:10 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/19cd9c61-dc24-4efd-8668-5d53d4cd4e0c + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '305' + x-request-id: bfb3f44e-a4fc-4cd1-9fbe-62c30e86d417 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/19cd9c61-dc24-4efd-8668-5d53d4cd4e0c + response: + body: + string: "{\"dataFeedId\":\"19cd9c61-dc24-4efd-8668-5d53d4cd4e0c\",\"dataFeedName\":\"adconfiggetasyncbad833b1\",\"metrics\":[{\"metricId\":\"e97a9138-7b8a-4c59-b715-1e7e6e13a587\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"91bc17cb-f8fd-47fe-a42c-e0304560401e\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-09T22:37:10Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 784132c6-2d93-4e10-a45d-e95095156aca + content-length: '1498' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:37:10 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '113' + x-request-id: 784132c6-2d93-4e10-a45d-e95095156aca + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/19cd9c61-dc24-4efd-8668-5d53d4cd4e0c +- request: + body: '{"name": "testdetectionconfigetasyncbad833b1", "description": "My test + metric anomaly detection configuration", "metricId": "e97a9138-7b8a-4c59-b715-1e7e6e13a587", + "wholeMetricConfiguration": {"conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 50.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 50, "minRatio": 50.0}}, "hardThresholdCondition": {"lowerBound": + 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": {"changePercentage": + 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Sao Paulo"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "Shenzhen", "category": "Jewelry"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}]}' + headers: + Accept: + - application/json + Content-Length: + - '1197' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: acf81ba4-50fb-416a-9b3b-b5b1913fad69 + content-length: '0' + date: Wed, 09 Sep 2020 22:37:10 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/b7680247-803b-48aa-b471-0a431e664fc1 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '142' + x-request-id: acf81ba4-50fb-416a-9b3b-b5b1913fad69 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/b7680247-803b-48aa-b471-0a431e664fc1 + response: + body: + string: '{"anomalyDetectionConfigurationId":"b7680247-803b-48aa-b471-0a431e664fc1","name":"testdetectionconfigetasyncbad833b1","description":"My + test metric anomaly detection configuration","metricId":"e97a9138-7b8a-4c59-b715-1e7e6e13a587","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"052cf31bf44ff560764d264a08f5464d","dimension":{"city":"Shenzhen","category":"Jewelry"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]}' + headers: + apim-request-id: e75b3515-1828-4a66-a5ab-12abe3b9f454 + content-length: '1240' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:37:10 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '72' + x-request-id: e75b3515-1828-4a66-a5ab-12abe3b9f454 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/b7680247-803b-48aa-b471-0a431e664fc1 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/19cd9c61-dc24-4efd-8668-5d53d4cd4e0c + response: + body: + string: '' + headers: + apim-request-id: 1dd02a9b-cea5-469f-8a79-c3748a75497b + content-length: '0' + date: Wed, 09 Sep 2020 22:37:11 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '260' + x-request-id: 1dd02a9b-cea5-469f-8a79-c3748a75497b + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/19cd9c61-dc24-4efd-8668-5d53d4cd4e0c +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_create_metric_anomaly_detection_configuration_whole_series_detection.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_create_metric_anomaly_detection_configuration_whole_series_detection.yaml new file mode 100644 index 000000000000..cb579fec8324 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_create_metric_anomaly_detection_configuration_whole_series_detection.yaml @@ -0,0 +1,200 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "adconfigasync2404327d", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '777' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: c62cfc4c-ffc5-4322-8a29-a584a80a464e + content-length: '0' + date: Wed, 09 Sep 2020 22:37:12 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/c1d79be1-e210-4859-8be6-9587f148c018 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '318' + x-request-id: c62cfc4c-ffc5-4322-8a29-a584a80a464e + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/c1d79be1-e210-4859-8be6-9587f148c018 + response: + body: + string: "{\"dataFeedId\":\"c1d79be1-e210-4859-8be6-9587f148c018\",\"dataFeedName\":\"adconfigasync2404327d\",\"metrics\":[{\"metricId\":\"f1514645-0fe3-4b1e-beb0-80c0942d10af\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"f09814b2-9dd2-4e55-9a82-b2ee0a95270a\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-09T22:37:12Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 000eb164-8bdc-4db9-aa6b-dc1e51ddf95b + content-length: '1495' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:37:13 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '122' + x-request-id: 000eb164-8bdc-4db9-aa6b-dc1e51ddf95b + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/c1d79be1-e210-4859-8be6-9587f148c018 +- request: + body: '{"name": "testdetectionconfigasync2404327d", "description": "My test metric + anomaly detection configuration", "metricId": "f1514645-0fe3-4b1e-beb0-80c0942d10af", + "wholeMetricConfiguration": {"conditionOperator": "OR", "smartDetectionCondition": + {"sensitivity": 50.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 50, "minRatio": 50.0}}, "hardThresholdCondition": {"lowerBound": + 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": {"changePercentage": + 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [], "seriesOverrideConfigurations": []}' + headers: + Accept: + - application/json + Content-Length: + - '789' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: 54594f6c-ad28-49af-a3dd-c4f26cf0297c + content-length: '0' + date: Wed, 09 Sep 2020 22:37:13 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/b914080c-b7e6-4b02-8444-1e86c0df4420 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '96' + x-request-id: 54594f6c-ad28-49af-a3dd-c4f26cf0297c + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/b914080c-b7e6-4b02-8444-1e86c0df4420 + response: + body: + string: '{"anomalyDetectionConfigurationId":"b914080c-b7e6-4b02-8444-1e86c0df4420","name":"testdetectionconfigasync2404327d","description":"My + test metric anomaly detection configuration","metricId":"f1514645-0fe3-4b1e-beb0-80c0942d10af","wholeMetricConfiguration":{"conditionOperator":"OR","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: 8652203f-5e9b-411d-89b8-2b5887ef08ab + content-length: '814' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:37:13 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '66' + x-request-id: 8652203f-5e9b-411d-89b8-2b5887ef08ab + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/b914080c-b7e6-4b02-8444-1e86c0df4420 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/b914080c-b7e6-4b02-8444-1e86c0df4420 + response: + body: + string: '' + headers: + apim-request-id: ba603ce1-5ceb-4d86-a8de-e80b07d88fb1 + content-length: '0' + date: Wed, 09 Sep 2020 22:37:13 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '75' + x-request-id: ba603ce1-5ceb-4d86-a8de-e80b07d88fb1 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/b914080c-b7e6-4b02-8444-1e86c0df4420 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/b914080c-b7e6-4b02-8444-1e86c0df4420 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyDetectionConfiguration. + TraceId: 807f125d-e118-4c37-89c7-842cc1ac897c"}' + headers: + apim-request-id: 67875891-aa0f-4cad-b166-47c6d98fc449 + content-length: '124' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 22:37:14 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '41' + x-request-id: 67875891-aa0f-4cad-b166-47c6d98fc449 + status: + code: 404 + message: Not Found + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/b914080c-b7e6-4b02-8444-1e86c0df4420 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/c1d79be1-e210-4859-8be6-9587f148c018 + response: + body: + string: '' + headers: + apim-request-id: e7dd8eda-3f45-4e0b-8849-0d01d1dc1809 + content-length: '0' + date: Wed, 09 Sep 2020 22:37:14 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '267' + x-request-id: e7dd8eda-3f45-4e0b-8849-0d01d1dc1809 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/c1d79be1-e210-4859-8be6-9587f148c018 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_list_metric_anomaly_detection_configs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_list_metric_anomaly_detection_configs.yaml new file mode 100644 index 000000000000..0975dfe50b22 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_list_metric_anomaly_detection_configs.yaml @@ -0,0 +1,32 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/enrichment/anomalyDetection/configurations + response: + body: + string: '{"value":[{"anomalyDetectionConfigurationId":"2fe9e687-4c9e-4e1b-8ec8-6541553db969","name":"new + Name","description":"new description","metricId":"metric_id","wholeMetricConfiguration":{"conditionOperator":"OR","hardThresholdCondition":{"upperBound":500.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":44.0,"shiftPoint":2,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":4,"minRatio":4.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"Dim1":"Common + Lime"}},"hardThresholdCondition":{"upperBound":400.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":2,"minRatio":2.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"54bdef99c03c71c764fd3ea671cd1260","dimension":{"Dim1":"Common + Beech","Dim2":"Ant"}},"changeThresholdCondition":{"changePercentage":33.0,"shiftPoint":1,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}}]},{"anomalyDetectionConfigurationId":"bd309211-64b5-4a7a-bb81-a2789599c526","name":"js-all-as-anomaly","description":"","metricId":"metric_id","wholeMetricConfiguration":{"hardThresholdCondition":{"upperBound":0.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":1,"minRatio":100.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]},{"anomalyDetectionConfigurationId":"a420626b-b09b-4938-9bd3-91f263f50612","name":"test_detection_configuration_java","description":"","metricId":"metric_id","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":68.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":1,"minRatio":100.0}},"changeThresholdCondition":{"changePercentage":5.0,"shiftPoint":1,"anomalyDetectorDirection":"Up","withinRange":false,"suppressCondition":{"minNumber":1,"minRatio":100.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"Dim1":"Common + Alder"}},"smartDetectionCondition":{"sensitivity":80.0,"anomalyDetectorDirection":"Down","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"8f0847fcd60e1002241f4da0f02b6d57","dimension":{"Dim1":"Common + Alder","Dim2":"American robin"}},"smartDetectionCondition":{"sensitivity":68.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]},{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","name":"Default","description":"","metricId":"metric_id","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":60.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}]}' + headers: + apim-request-id: 70def1e6-8087-4389-8c38-526a92110321 + content-length: '2925' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 01:48:02 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '2805' + x-request-id: 70def1e6-8087-4389-8c38-526a92110321 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/enrichment/anomalyDetection/configurations +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_update_detection_config_by_resetting_properties.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_update_detection_config_by_resetting_properties.yaml new file mode 100644 index 000000000000..dbd603f081ef --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_update_detection_config_by_resetting_properties.yaml @@ -0,0 +1,210 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "updatedetection571b2741", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '778' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: aac25dff-d116-4428-9122-7587b6cf577c + content-length: '0' + date: Mon, 21 Sep 2020 23:49:22 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/152400a8-4ee8-416a-9f7d-07af8159dc53 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '626' + x-request-id: aac25dff-d116-4428-9122-7587b6cf577c + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/152400a8-4ee8-416a-9f7d-07af8159dc53 + response: + body: + string: "{\"dataFeedId\":\"152400a8-4ee8-416a-9f7d-07af8159dc53\",\"dataFeedName\":\"updatedetection571b2741\",\"metrics\":[{\"metricId\":\"d1a8ed31-9343-48b5-a29d-2258770e7296\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"c47eb638-f428-40cd-a446-728b0155f9f1\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T23:49:23Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: a4421186-805e-4c20-bd65-ae069e6d9b62 + content-length: '1496' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:49:22 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '191' + x-request-id: a4421186-805e-4c20-bd65-ae069e6d9b62 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/152400a8-4ee8-416a-9f7d-07af8159dc53 +- request: + body: '{"name": "testupdated571b2741", "description": "My test metric anomaly + detection configuration", "metricId": "d1a8ed31-9343-48b5-a29d-2258770e7296", + "wholeMetricConfiguration": {"conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 50.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 50, "minRatio": 50.0}}, "hardThresholdCondition": {"lowerBound": + 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": {"changePercentage": + 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Sao Paulo"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "Shenzhen", "category": "Jewelry"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}]}' + headers: + Accept: + - application/json + Content-Length: + - '1182' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: 00b0be06-856a-4e10-b79c-392fadb843f4 + content-length: '0' + date: Mon, 21 Sep 2020 23:49:23 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c4925d17-262c-4999-8060-2fe5e0415db8 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '222' + x-request-id: 00b0be06-856a-4e10-b79c-392fadb843f4 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c4925d17-262c-4999-8060-2fe5e0415db8 + response: + body: + string: '{"anomalyDetectionConfigurationId":"c4925d17-262c-4999-8060-2fe5e0415db8","name":"testupdated571b2741","description":"My + test metric anomaly detection configuration","metricId":"d1a8ed31-9343-48b5-a29d-2258770e7296","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"4b224008a1d941c821d8ffc49945b503","dimension":{"city":"Shenzhen","category":"Jewelry"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]}' + headers: + apim-request-id: 346390ef-1bd5-4b5b-828f-ed32a056bb7c + content-length: '1225' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:49:29 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '5191' + x-request-id: 346390ef-1bd5-4b5b-828f-ed32a056bb7c + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c4925d17-262c-4999-8060-2fe5e0415db8 +- request: + body: '{"name": "reset", "description": ""}' + headers: + Accept: + - application/json + Content-Length: + - '36' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c4925d17-262c-4999-8060-2fe5e0415db8 + response: + body: + string: '' + headers: + apim-request-id: a45457fc-514f-46d8-ae8f-866bb1e0551a + content-length: '0' + date: Mon, 21 Sep 2020 23:49:29 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: a45457fc-514f-46d8-ae8f-866bb1e0551a + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c4925d17-262c-4999-8060-2fe5e0415db8 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c4925d17-262c-4999-8060-2fe5e0415db8 + response: + body: + string: '{"anomalyDetectionConfigurationId":"c4925d17-262c-4999-8060-2fe5e0415db8","name":"reset","description":"","metricId":"d1a8ed31-9343-48b5-a29d-2258770e7296","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"4b224008a1d941c821d8ffc49945b503","dimension":{"city":"Shenzhen","category":"Jewelry"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]}' + headers: + apim-request-id: e9177076-c2e4-43e7-8d2e-0ef2ee98a82c + content-length: '1165' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:49:29 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '71' + x-request-id: e9177076-c2e4-43e7-8d2e-0ef2ee98a82c + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c4925d17-262c-4999-8060-2fe5e0415db8 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/152400a8-4ee8-416a-9f7d-07af8159dc53 + response: + body: + string: '' + headers: + apim-request-id: 1e35f5f8-7219-429b-b14b-6be20e0f079c + content-length: '0' + date: Mon, 21 Sep 2020 23:49:29 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '273' + x-request-id: 1e35f5f8-7219-429b-b14b-6be20e0f079c + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/152400a8-4ee8-416a-9f7d-07af8159dc53 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_update_detection_config_with_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_update_detection_config_with_kwargs.yaml new file mode 100644 index 000000000000..317468b78203 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_update_detection_config_with_kwargs.yaml @@ -0,0 +1,230 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "updatedetection9c852230", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '778' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: e87a42a1-c425-4c32-8c7e-25f38c3949f8 + content-length: '0' + date: Mon, 21 Sep 2020 23:49:31 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/34292aa1-e3bb-4a4e-ba94-984c60e2d472 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '372' + x-request-id: e87a42a1-c425-4c32-8c7e-25f38c3949f8 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/34292aa1-e3bb-4a4e-ba94-984c60e2d472 + response: + body: + string: "{\"dataFeedId\":\"34292aa1-e3bb-4a4e-ba94-984c60e2d472\",\"dataFeedName\":\"updatedetection9c852230\",\"metrics\":[{\"metricId\":\"b19434b0-1651-419e-9d1e-8a45f3e6b18d\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"4dfe2873-6e56-4dba-bfbf-12dd7627fc53\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T23:49:31Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 5ce36599-58d4-4f6f-b871-639ac9a75cc4 + content-length: '1496' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:49:31 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '130' + x-request-id: 5ce36599-58d4-4f6f-b871-639ac9a75cc4 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/34292aa1-e3bb-4a4e-ba94-984c60e2d472 +- request: + body: '{"name": "testupdated9c852230", "description": "My test metric anomaly + detection configuration", "metricId": "b19434b0-1651-419e-9d1e-8a45f3e6b18d", + "wholeMetricConfiguration": {"conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 50.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 50, "minRatio": 50.0}}, "hardThresholdCondition": {"lowerBound": + 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": {"changePercentage": + 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Sao Paulo"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "Shenzhen", "category": "Jewelry"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}]}' + headers: + Accept: + - application/json + Content-Length: + - '1182' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: fd2aba94-cd60-474c-a02e-40a53dc1bbbc + content-length: '0' + date: Mon, 21 Sep 2020 23:49:31 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/731b9eaf-7805-4060-bb08-bec93ed88050 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '153' + x-request-id: fd2aba94-cd60-474c-a02e-40a53dc1bbbc + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/731b9eaf-7805-4060-bb08-bec93ed88050 + response: + body: + string: '{"anomalyDetectionConfigurationId":"731b9eaf-7805-4060-bb08-bec93ed88050","name":"testupdated9c852230","description":"My + test metric anomaly detection configuration","metricId":"b19434b0-1651-419e-9d1e-8a45f3e6b18d","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"fc37fd20a8babfcaefc95419835f7167","dimension":{"city":"Shenzhen","category":"Jewelry"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]}' + headers: + apim-request-id: 20f84daa-4c82-468e-a0eb-fb451b51a954 + content-length: '1225' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:49:32 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '69' + x-request-id: 20f84daa-4c82-468e-a0eb-fb451b51a954 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/731b9eaf-7805-4060-bb08-bec93ed88050 +- request: + body: '{"name": "updated", "wholeMetricConfiguration": {"conditionOperator": "OR", + "smartDetectionCondition": {"sensitivity": 10.0, "anomalyDetectorDirection": + "Up", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}, "hardThresholdCondition": + {"upperBound": 100.0, "anomalyDetectorDirection": "Up", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}, "changeThresholdCondition": {"changePercentage": + 20.0, "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Shenzen"}}, "conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 10.0, "anomalyDetectorDirection": "Up", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}, "hardThresholdCondition": {"upperBound": + 100.0, "anomalyDetectorDirection": "Up", "suppressCondition": {"minNumber": + 5, "minRatio": 2.0}}, "changeThresholdCondition": {"changePercentage": 20.0, + "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "San Paulo", "category": "Jewelry"}}, "conditionOperator": + "AND", "smartDetectionCondition": {"sensitivity": 10.0, "anomalyDetectorDirection": + "Up", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}, "hardThresholdCondition": + {"upperBound": 100.0, "anomalyDetectorDirection": "Up", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}, "changeThresholdCondition": {"changePercentage": + 20.0, "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}}], "description": "updated"}' + headers: + Accept: + - application/json + Content-Length: + - '1752' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/731b9eaf-7805-4060-bb08-bec93ed88050 + response: + body: + string: '' + headers: + apim-request-id: 09411087-140c-4f1e-ae25-0a54a0d3b76f + content-length: '0' + date: Mon, 21 Sep 2020 23:49:32 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '164' + x-request-id: 09411087-140c-4f1e-ae25-0a54a0d3b76f + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/731b9eaf-7805-4060-bb08-bec93ed88050 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/731b9eaf-7805-4060-bb08-bec93ed88050 + response: + body: + string: '{"anomalyDetectionConfigurationId":"731b9eaf-7805-4060-bb08-bec93ed88050","name":"updated","description":"updated","metricId":"b19434b0-1651-419e-9d1e-8a45f3e6b18d","wholeMetricConfiguration":{"conditionOperator":"OR","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Shenzen"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"a306cfa02ebf0ac49afc92486636ca54","dimension":{"city":"San + Paulo","category":"Jewelry"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}}]}' + headers: + apim-request-id: 594dfa4a-3bc1-4674-be0f-622669472230 + content-length: '1797' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:49:32 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '69' + x-request-id: 594dfa4a-3bc1-4674-be0f-622669472230 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/731b9eaf-7805-4060-bb08-bec93ed88050 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/34292aa1-e3bb-4a4e-ba94-984c60e2d472 + response: + body: + string: '' + headers: + apim-request-id: 348c6f32-42f5-49f2-b8e7-30d5a2a395b5 + content-length: '0' + date: Mon, 21 Sep 2020 23:49:33 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '289' + x-request-id: 348c6f32-42f5-49f2-b8e7-30d5a2a395b5 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/34292aa1-e3bb-4a4e-ba94-984c60e2d472 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_update_detection_config_with_model.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_update_detection_config_with_model.yaml new file mode 100644 index 000000000000..2dce6bc7efc2 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_update_detection_config_with_model.yaml @@ -0,0 +1,230 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "updatedetection7a3321b2", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '778' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 731748c3-3df9-49f2-8cfe-202bc8581efd + content-length: '0' + date: Mon, 21 Sep 2020 23:49:34 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/467ad9b8-fc58-4a4b-8ec0-7c83df933818 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '366' + x-request-id: 731748c3-3df9-49f2-8cfe-202bc8581efd + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/467ad9b8-fc58-4a4b-8ec0-7c83df933818 + response: + body: + string: "{\"dataFeedId\":\"467ad9b8-fc58-4a4b-8ec0-7c83df933818\",\"dataFeedName\":\"updatedetection7a3321b2\",\"metrics\":[{\"metricId\":\"0951e8a4-4a9a-44bd-af8a-e79177841561\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"becec1ff-3fc0-4176-90aa-ce7fb4a5a017\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T23:49:34Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 123fde77-7430-4566-abe3-b9d090a0bbd7 + content-length: '1496' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:49:35 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '131' + x-request-id: 123fde77-7430-4566-abe3-b9d090a0bbd7 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/467ad9b8-fc58-4a4b-8ec0-7c83df933818 +- request: + body: '{"name": "testupdated7a3321b2", "description": "My test metric anomaly + detection configuration", "metricId": "0951e8a4-4a9a-44bd-af8a-e79177841561", + "wholeMetricConfiguration": {"conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 50.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 50, "minRatio": 50.0}}, "hardThresholdCondition": {"lowerBound": + 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": {"changePercentage": + 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Sao Paulo"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "Shenzhen", "category": "Jewelry"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}]}' + headers: + Accept: + - application/json + Content-Length: + - '1182' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: 3d482171-00e9-4d8c-afdd-2f6b8e88ac1c + content-length: '0' + date: Mon, 21 Sep 2020 23:49:35 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/a0d4432b-5f0e-45bf-bdbb-051977c99140 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '143' + x-request-id: 3d482171-00e9-4d8c-afdd-2f6b8e88ac1c + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/a0d4432b-5f0e-45bf-bdbb-051977c99140 + response: + body: + string: '{"anomalyDetectionConfigurationId":"a0d4432b-5f0e-45bf-bdbb-051977c99140","name":"testupdated7a3321b2","description":"My + test metric anomaly detection configuration","metricId":"0951e8a4-4a9a-44bd-af8a-e79177841561","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"284ae93a40cae7eb5aff11f84205b7a3","dimension":{"city":"Shenzhen","category":"Jewelry"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]}' + headers: + apim-request-id: d098237b-66ce-480d-bd48-dc46a348d6db + content-length: '1225' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:49:35 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '73' + x-request-id: d098237b-66ce-480d-bd48-dc46a348d6db + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/a0d4432b-5f0e-45bf-bdbb-051977c99140 +- request: + body: '{"name": "updated", "description": "updated", "wholeMetricConfiguration": + {"conditionOperator": "OR", "smartDetectionCondition": {"sensitivity": 10.0, + "anomalyDetectorDirection": "Up", "suppressCondition": {"minNumber": 5, "minRatio": + 2.0}}, "hardThresholdCondition": {"upperBound": 100.0, "anomalyDetectorDirection": + "Up", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}, "changeThresholdCondition": + {"changePercentage": 20.0, "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Sao Paulo"}}, "conditionOperator": "AND", + "smartDetectionCondition": {"sensitivity": 10.0, "anomalyDetectorDirection": + "Up", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}, "hardThresholdCondition": + {"upperBound": 100.0, "anomalyDetectorDirection": "Up", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}, "changeThresholdCondition": {"changePercentage": + 20.0, "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}}], "seriesOverrideConfigurations": + [{"series": {"dimension": {"city": "Shenzhen", "category": "Jewelry"}}, "conditionOperator": + "AND", "smartDetectionCondition": {"sensitivity": 10.0, "anomalyDetectorDirection": + "Up", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}, "hardThresholdCondition": + {"upperBound": 100.0, "anomalyDetectorDirection": "Up", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}, "changeThresholdCondition": {"changePercentage": + 20.0, "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}}]}' + headers: + Accept: + - application/json + Content-Length: + - '1753' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/a0d4432b-5f0e-45bf-bdbb-051977c99140 + response: + body: + string: '' + headers: + apim-request-id: 1447bd25-bf94-40ba-b964-0df1c8cd6ccf + content-length: '0' + date: Mon, 21 Sep 2020 23:49:35 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '163' + x-request-id: 1447bd25-bf94-40ba-b964-0df1c8cd6ccf + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/a0d4432b-5f0e-45bf-bdbb-051977c99140 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/a0d4432b-5f0e-45bf-bdbb-051977c99140 + response: + body: + string: '{"anomalyDetectionConfigurationId":"a0d4432b-5f0e-45bf-bdbb-051977c99140","name":"updated","description":"updated","metricId":"0951e8a4-4a9a-44bd-af8a-e79177841561","wholeMetricConfiguration":{"conditionOperator":"OR","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"284ae93a40cae7eb5aff11f84205b7a3","dimension":{"city":"Shenzhen","category":"Jewelry"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}}]}' + headers: + apim-request-id: 7179cf48-fe81-49d8-8cb8-19c6763db22d + content-length: '1798' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:49:36 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: 7179cf48-fe81-49d8-8cb8-19c6763db22d + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/a0d4432b-5f0e-45bf-bdbb-051977c99140 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/467ad9b8-fc58-4a4b-8ec0-7c83df933818 + response: + body: + string: '' + headers: + apim-request-id: 6f6b9b89-c954-4c6c-a7b7-48c85198a48b + content-length: '0' + date: Mon, 21 Sep 2020 23:49:36 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '263' + x-request-id: 6f6b9b89-c954-4c6c-a7b7-48c85198a48b + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/467ad9b8-fc58-4a4b-8ec0-7c83df933818 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_update_detection_config_with_model_and_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_update_detection_config_with_model_and_kwargs.yaml new file mode 100644 index 000000000000..29fc4a831a8f --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metric_anomaly_detection_config_async.test_update_detection_config_with_model_and_kwargs.yaml @@ -0,0 +1,229 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "updatedetection75d2632", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Content-Length: + - '777' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: 8c2578e8-e1ce-4e8b-a9ee-68497a768681 + content-length: '0' + date: Mon, 21 Sep 2020 23:49:38 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/030babfe-8b8a-45b5-b84a-674620402ef2 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '377' + x-request-id: 8c2578e8-e1ce-4e8b-a9ee-68497a768681 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/030babfe-8b8a-45b5-b84a-674620402ef2 + response: + body: + string: "{\"dataFeedId\":\"030babfe-8b8a-45b5-b84a-674620402ef2\",\"dataFeedName\":\"updatedetection75d2632\",\"metrics\":[{\"metricId\":\"2a05e66a-0b82-4e39-a0d8-2c584b2fa1cb\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"3133504e-4982-4852-870e-5c1f81a75f46\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T23:49:38Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: 1360e5b0-9a73-4f38-967b-51823829cafc + content-length: '1495' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:49:38 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '127' + x-request-id: 1360e5b0-9a73-4f38-967b-51823829cafc + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/030babfe-8b8a-45b5-b84a-674620402ef2 +- request: + body: '{"name": "testupdated75d2632", "description": "My test metric anomaly detection + configuration", "metricId": "2a05e66a-0b82-4e39-a0d8-2c584b2fa1cb", "wholeMetricConfiguration": + {"conditionOperator": "AND", "smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}, "hardThresholdCondition": {"lowerBound": 0.0, "upperBound": 100.0, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": + {"changePercentage": 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Sao Paulo"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "Shenzhen", "category": "Jewelry"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}]}' + headers: + Accept: + - application/json + Content-Length: + - '1181' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: 29525af0-84f9-4c69-81d6-e04ed08de105 + content-length: '0' + date: Mon, 21 Sep 2020 23:49:38 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bccf9dfe-4d35-4bbe-b832-ff5b104163d2 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '158' + x-request-id: 29525af0-84f9-4c69-81d6-e04ed08de105 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bccf9dfe-4d35-4bbe-b832-ff5b104163d2 + response: + body: + string: '{"anomalyDetectionConfigurationId":"bccf9dfe-4d35-4bbe-b832-ff5b104163d2","name":"testupdated75d2632","description":"My + test metric anomaly detection configuration","metricId":"2a05e66a-0b82-4e39-a0d8-2c584b2fa1cb","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"4657581810f0b311e54fd9403efad375","dimension":{"city":"Shenzhen","category":"Jewelry"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]}' + headers: + apim-request-id: f2bcabe1-2b70-4029-929d-74239e25ac30 + content-length: '1224' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:49:38 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '72' + x-request-id: f2bcabe1-2b70-4029-929d-74239e25ac30 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bccf9dfe-4d35-4bbe-b832-ff5b104163d2 +- request: + body: '{"name": "updateMe", "description": "updateMe", "wholeMetricConfiguration": + {"conditionOperator": "OR", "smartDetectionCondition": {"sensitivity": 10.0, + "anomalyDetectorDirection": "Up", "suppressCondition": {"minNumber": 5, "minRatio": + 2.0}}, "hardThresholdCondition": {"upperBound": 100.0, "anomalyDetectorDirection": + "Up", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}, "changeThresholdCondition": + {"changePercentage": 20.0, "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Shenzen"}}, "conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 10.0, "anomalyDetectorDirection": "Up", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}, "hardThresholdCondition": {"upperBound": + 100.0, "anomalyDetectorDirection": "Up", "suppressCondition": {"minNumber": + 5, "minRatio": 2.0}}, "changeThresholdCondition": {"changePercentage": 20.0, + "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "San Paulo", "category": "Jewelry"}}, "conditionOperator": + "AND", "smartDetectionCondition": {"sensitivity": 10.0, "anomalyDetectorDirection": + "Up", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}, "hardThresholdCondition": + {"upperBound": 100.0, "anomalyDetectorDirection": "Up", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}, "changeThresholdCondition": {"changePercentage": + 20.0, "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}}]}' + headers: + Accept: + - application/json + Content-Length: + - '1754' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bccf9dfe-4d35-4bbe-b832-ff5b104163d2 + response: + body: + string: '' + headers: + apim-request-id: 66f0d034-488a-4ae7-8eca-bb01521af2c2 + content-length: '0' + date: Mon, 21 Sep 2020 23:49:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '165' + x-request-id: 66f0d034-488a-4ae7-8eca-bb01521af2c2 + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bccf9dfe-4d35-4bbe-b832-ff5b104163d2 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bccf9dfe-4d35-4bbe-b832-ff5b104163d2 + response: + body: + string: '{"anomalyDetectionConfigurationId":"bccf9dfe-4d35-4bbe-b832-ff5b104163d2","name":"updateMe","description":"updateMe","metricId":"2a05e66a-0b82-4e39-a0d8-2c584b2fa1cb","wholeMetricConfiguration":{"conditionOperator":"OR","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Shenzen"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"62dd523eedadd6115381ea4944bd2990","dimension":{"city":"San + Paulo","category":"Jewelry"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}}]}' + headers: + apim-request-id: b98f6f93-ccb4-4143-8cfc-75fefc8e2688 + content-length: '1799' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 23:49:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '67' + x-request-id: b98f6f93-ccb4-4143-8cfc-75fefc8e2688 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bccf9dfe-4d35-4bbe-b832-ff5b104163d2 +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/030babfe-8b8a-45b5-b84a-674620402ef2 + response: + body: + string: '' + headers: + apim-request-id: 48e4f68b-5b2d-4287-a3a2-d038daab19bd + content-length: '0' + date: Mon, 21 Sep 2020 23:49:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '266' + x-request-id: 48e4f68b-5b2d-4287-a3a2-d038daab19bd + status: + code: 204 + message: No Content + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com//metricsadvisor/v1.0/dataFeeds/030babfe-8b8a-45b5-b84a-674620402ef2 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_add_anomaly_feedback.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_add_anomaly_feedback.yaml new file mode 100644 index 000000000000..bb56c33db0a8 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_add_anomaly_feedback.yaml @@ -0,0 +1,33 @@ +interactions: +- request: + body: '{"feedbackType": "Anomaly", "metricId": "metric_id", "dimensionFilter": + {"dimension": {"dimension_name": "Common Lime"}}, "startTime": "2020-08-05T00:00:00.000Z", + "endTime": "2020-08-07T00:00:00.000Z", "value": {"anomalyValue": "NotAnomaly"}}' + headers: + Accept: + - application/json + Content-Length: + - '259' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric + response: + body: + string: '' + headers: + apim-request-id: 1173bb14-23cb-463a-acd7-4bc4d2d2c908 + content-length: '0' + date: Tue, 22 Sep 2020 20:35:52 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric/bae7b6de-1681-485c-be92-e2c230d3964f + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '390' + x-request-id: 1173bb14-23cb-463a-acd7-4bc4d2d2c908 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_add_change_point_feedback.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_add_change_point_feedback.yaml new file mode 100644 index 000000000000..fde5789981dc --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_add_change_point_feedback.yaml @@ -0,0 +1,33 @@ +interactions: +- request: + body: '{"feedbackType": "ChangePoint", "metricId": "metric_id", "dimensionFilter": + {"dimension": {"dimension_name": "Common Lime"}}, "startTime": "2020-08-05T00:00:00.000Z", + "endTime": "2020-08-07T00:00:00.000Z", "value": {"changePointValue": "NotChangePoint"}}' + headers: + Accept: + - application/json + Content-Length: + - '271' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric + response: + body: + string: '' + headers: + apim-request-id: f9ae3223-8857-4b48-b713-99a258cd10d3 + content-length: '0' + date: Tue, 22 Sep 2020 20:39:56 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric/c668c6eb-6f50-423a-880f-2eae15356867 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '339' + x-request-id: f9ae3223-8857-4b48-b713-99a258cd10d3 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_add_comment_feedback.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_add_comment_feedback.yaml new file mode 100644 index 000000000000..de65d4ec7071 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_add_comment_feedback.yaml @@ -0,0 +1,33 @@ +interactions: +- request: + body: '{"feedbackType": "Comment", "metricId": "metric_id", "dimensionFilter": + {"dimension": {"dimension_name": "Common Lime"}}, "startTime": "2020-08-05T00:00:00.000Z", + "endTime": "2020-08-07T00:00:00.000Z", "value": {"commentValue": "comment"}}' + headers: + Accept: + - application/json + Content-Length: + - '256' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric + response: + body: + string: '' + headers: + apim-request-id: 7c679eb2-2d9e-4cbd-a795-a44e59dc15f1 + content-length: '0' + date: Tue, 22 Sep 2020 20:33:11 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric/1030dd4e-1e39-4d87-b0df-4d963835eaec + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '5424' + x-request-id: 7c679eb2-2d9e-4cbd-a795-a44e59dc15f1 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_add_period_feedback.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_add_period_feedback.yaml new file mode 100644 index 000000000000..468a67b8476a --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_add_period_feedback.yaml @@ -0,0 +1,33 @@ +interactions: +- request: + body: '{"feedbackType": "Comment", "metricId": "metric_id", "dimensionFilter": + {"dimension": {"dimension_name": "Common Lime"}}, "value": {"periodType": "AssignValue", + "periodValue": 2}}' + headers: + Accept: + - application/json + Content-Length: + - '196' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric + response: + body: + string: '' + headers: + apim-request-id: 7d531e8b-8b50-47ec-b39d-242c550c8a82 + content-length: '0' + date: Tue, 22 Sep 2020 20:33:20 GMT + location: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric/7ffb55c7-2a65-4fc2-a8a8-2ed05e125a65 + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '296' + x-request-id: 7d531e8b-8b50-47ec-b39d-242c550c8a82 + status: + code: 201 + message: Created + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_get_feedback.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_get_feedback.yaml new file mode 100644 index 000000000000..8d3892aa1489 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_get_feedback.yaml @@ -0,0 +1,31 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric/feedback_id + response: + body: + string: '{"feedbackId":"feedback_id","createdTime":"2020-09-22T00:24:18.629Z","userPrincipal":"xiangyan@microsoft.com","metricId":"metric_id","dimensionFilter":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Amphibian"}},"feedbackType":"Anomaly","startTime":"2020-08-30T00:00:00Z","endTime":"2020-08-30T00:00:00Z","value":{"anomalyValue":"NotAnomaly"},"anomalyDetectionConfigurationId":"2fe9e687-4c9e-4e1b-8ec8-6541553db969","anomalyDetectionConfigurationSnapshot":{"anomalyDetectionConfigurationId":"2fe9e687-4c9e-4e1b-8ec8-6541553db969","name":"new + Name","description":"new description","metricId":"metric_id","wholeMetricConfiguration":{"conditionOperator":"OR","hardThresholdCondition":{"upperBound":500.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minAlertNumber":5,"minAlertRatio":5.0}},"changeThresholdCondition":{"changePercentage":44.0,"shiftPoint":2,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minAlertNumber":4,"minAlertRatio":4.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"seriesGroupConfigurationId":"51242ee0b8c72df4e537ffdfe0e8af69","tagSet":{"dimension_name":"Common + Lime"}},"conditionOperator":"AND","hardThresholdCondition":{"upperBound":400.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minAlertNumber":2,"minAlertRatio":2.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesConfigurationId":"54bdef99c03c71c764fd3ea671cd1260","tagSet":{"dimension_name":"Common + Beech","Dim2":"Ant"}},"conditionOperator":"OR","changeThresholdCondition":{"changePercentage":33.0,"shiftPoint":1,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minAlertNumber":2,"minAlertRatio":2.0}}}],"favoriteSeries":[],"disabledSeries":[]}}' + headers: + apim-request-id: f481a880-965b-4f17-b9cd-7e3975997197 + content-length: '1765' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 00:42:14 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '154' + x-request-id: f481a880-965b-4f17-b9cd-7e3975997197 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric/f8f3db61-bc18-49ac-80a3-5b64bf3878df +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_get_incident_root_cause.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_get_incident_root_cause.yaml new file mode 100644 index 000000000000..72e676d397d2 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_get_incident_root_cause.yaml @@ -0,0 +1,26 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-gualala.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/78bc85db-234a-480b-b696-f38128ab31f7/incidents/de5eea69e85f086da050057e2926076f-173c1114000/rootCause + response: + body: + string: '{"value":[]}' + headers: + apim-request-id: f79f9c06-a937-4bc4-b7fd-4ecd27c11ef9 + content-length: '12' + content-type: application/json; charset=utf-8 + date: Thu, 27 Aug 2020 16:22:55 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '312' + status: + code: 200 + message: OK + url: https://anuchan-cg-gualala.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/78bc85db-234a-480b-b696-f38128ab31f7/incidents/de5eea69e85f086da050057e2926076f-173c1114000/rootCause +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_get_metrics_series_data.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_get_metrics_series_data.yaml new file mode 100644 index 000000000000..1c5fec1317c9 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_get_metrics_series_data.yaml @@ -0,0 +1,33 @@ +interactions: +- request: + body: '{"startTime": "2020-08-05T00:00:00.000Z", "endTime": "2020-08-07T00:00:00.000Z", + "series": [{"city": "Mumbai", "category": "Shoes Handbags & Sunglasses"}]}' + headers: + Accept: + - application/json + Content-Length: + - '155' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-gualala.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/6412a857-8fa4-44e0-8cb4-a99e9b63d71f/data/query + response: + body: + string: '{"value":[{"id":{"metricId":"6412a857-8fa4-44e0-8cb4-a99e9b63d71f","dimension":{"city":"Mumbai","category":"Shoes + Handbags & Sunglasses"}},"timestampList":["2020-08-05T00:00:00Z","2020-08-06T00:00:00Z"],"valueList":[3700223.6,3602890.2]}]}' + headers: + apim-request-id: f0d06994-79a3-4b94-9b1e-369def7b4dd6 + content-length: '239' + content-type: application/json; charset=utf-8 + date: Wed, 09 Sep 2020 01:28:13 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '278' + x-request-id: f0d06994-79a3-4b94-9b1e-369def7b4dd6 + status: + code: 200 + message: OK + url: https://anuchan-cg-gualala.cognitiveservices.azure.com//metricsadvisor/v1.0/metrics/6412a857-8fa4-44e0-8cb4-a99e9b63d71f/data/query +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_get_series.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_get_series.yaml new file mode 100644 index 000000000000..06c4f1158719 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_get_series.yaml @@ -0,0 +1,31 @@ +interactions: +- request: + body: '{"startTime": "2020-08-05T00:00:00.000Z", "endTime": "2020-08-07T00:00:00.000Z", + "series": [{"dimension": {"city": "city"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '125' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-gualala.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/78bc85db-234a-480b-b696-f38128ab31f7/series/query + response: + body: + string: '{"value":[{"series":{"dimension":{"city":"city"}},"timestampList":[],"valueList":[],"isAnomalyList":[],"periodList":[],"expectedValueList":[],"lowerBoundaryList":[],"upperBoundaryList":[]}]}' + headers: + apim-request-id: 976959c4-9c0a-440d-8e36-67062a4c3cf7 + content-length: '190' + content-type: application/json; charset=utf-8 + date: Thu, 27 Aug 2020 23:09:44 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '5376' + status: + code: 200 + message: OK + url: https://anuchan-cg-gualala.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/78bc85db-234a-480b-b696-f38128ab31f7/series/query +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_alerts_for_alert_configuration.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_alerts_for_alert_configuration.yaml new file mode 100644 index 000000000000..d9c2b65e0c8b --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_alerts_for_alert_configuration.yaml @@ -0,0 +1,32 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z", + "timeMode": "AnomalyTime"}' + headers: + Accept: + - application/json + Content-Length: + - '107' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/anomaly_alert_configuration_id/alerts/query + response: + body: + string: '{"value":[{"alertId":"alert_id","timestamp":"2020-09-08T00:00:00Z","createdTime":"2020-09-12T01:15:16.406Z","modifiedTime":"2020-09-14T20:42:57.048Z"},{"alertId":"17465dcc000","timestamp":"2020-09-07T00:00:00Z","createdTime":"2020-09-12T01:14:17.184Z","modifiedTime":"2020-09-12T01:28:54.26Z"},{"alertId":"17460b66400","timestamp":"2020-09-06T00:00:00Z","createdTime":"2020-09-12T01:14:16.927Z","modifiedTime":"2020-09-12T01:24:16.887Z"}],"@nextLink":null}' + headers: + apim-request-id: a97a72a0-3499-481b-894d-499cb6dc5c1a + content-length: '459' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:48:14 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '139' + x-request-id: a97a72a0-3499-481b-894d-499cb6dc5c1a + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/ff3014a0-bbbb-41ec-a637-677e77b81299/alerts/query +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_anomalies_for_alert.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_anomalies_for_alert.yaml new file mode 100644 index 000000000000..dd7ae3a718c1 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_anomalies_for_alert.yaml @@ -0,0 +1,30 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/anomaly_alert_configuration_id/alerts/alert_id/anomalies + response: + body: + string: '{"value":[{"metricId":"metric_id","anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","timestamp":"2020-09-08T00:00:00Z","createdTime":"2020-09-12T01:15:16.46Z","modifiedTime":"2020-09-12T01:15:16.46Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low","anomalyStatus":"Active"}},{"metricId":"metric_id","anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","timestamp":"2020-09-08T00:00:00Z","createdTime":"2020-09-12T01:15:16.46Z","modifiedTime":"2020-09-12T01:15:16.46Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low","anomalyStatus":"Active"}},{"metricId":"metric_id","anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","timestamp":"2020-09-08T00:00:00Z","createdTime":"2020-09-12T01:15:16.46Z","modifiedTime":"2020-09-12T01:15:16.46Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Medium","anomalyStatus":"Active"}}],"@nextLink":null}' + headers: + apim-request-id: dde9263c-f05f-4bc5-b66d-a6a98653b744 + content-length: '1110' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:48:01 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '5217' + x-request-id: dde9263c-f05f-4bc5-b66d-a6a98653b744 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/ff3014a0-bbbb-41ec-a637-677e77b81299/alerts/1746b031c00/anomalies +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_anomalies_for_detection_configuration.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_anomalies_for_detection_configuration.yaml new file mode 100644 index 000000000000..9d3482b60350 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_anomalies_for_detection_configuration.yaml @@ -0,0 +1,1338 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/anomalies/query + response: + body: + string: '{"value":[{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Buzzard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Yew","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Caterpillar"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Blackbird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bobolink"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Amphibian"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bat"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Amphibian"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Buzzard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Black widow spider"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Blackbird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Amphibian"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bald + eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bobolink"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beetle"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bat"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Amphibian"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Camel"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Amphibian"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Animals + by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Buzzard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Black widow spider"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bobolink"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Canidae"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Beaked + whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Black widow spider"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Capybara"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Butterfly"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Boa"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Boa"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Black + panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bobolink"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Butterfly"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Arabian + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Antelope"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Black + panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Box jellyfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Canid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Arabian + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Booby"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Cat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Canid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"American + robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"American + robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"African buffalo"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"African + buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Aspen","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bali + cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Boa"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Butterfly"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Box jellyfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"African + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Caterpillar"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Beaked + whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bali + cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ass + (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Aspen","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Amphibian"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Animals + by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Box jellyfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Animals + by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bali + cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ass + (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Aspen","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Animals + by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Animals + by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"African + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ass + (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Black + panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ass + (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Animals + by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Cardinal"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Amphibian"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"American + robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Aspen","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bali + cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Beaked + whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/anomalies/query?$top=1000&$skip=1000"}' + headers: + apim-request-id: 41afadd3-cd03-48c5-8013-c83964891081 + content-length: '129955' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 16:55:00 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '259' + x-request-id: 41afadd3-cd03-48c5-8013-c83964891081 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c0f2539f-b804-4ab9-a70f-0da0c89c76d8/anomalies/query +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/anomalies/query?$top=1000&$skip=1000 + response: + body: + string: '{"value":[{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bali + cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Animals + by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ass + (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bat"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Animals + by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bali + cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Alpaca"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Albatross"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Amphibian"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African elephant"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Alpaca"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Ape"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Black + panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ape"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Amphibian"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Ass + (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bee"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Baboon"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Badger"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bat"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Animals + by number of neurons"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Alpaca"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bear"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bee"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Beaked + whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Basilisk"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"African + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bald + eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Albatross"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Basilisk"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Antelope"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bird"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alpaca"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Black + panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Asp"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + leopard"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Alpaca"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Ape"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Black + panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arabian + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"American + robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Badger"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Amphibian"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"African + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Aspen","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arabian + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Badger"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}}],"@nextLink":null}' + headers: + apim-request-id: 8d091fe3-9b56-4123-94aa-76394ca1be1e + content-length: '59539' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 16:55:02 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '243' + x-request-id: 8d091fe3-9b56-4123-94aa-76394ca1be1e + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c0f2539f-b804-4ab9-a70f-0da0c89c76d8/anomalies/query?$top=1000&$skip=1000 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_dimension_values_for_detection_configuration.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_dimension_values_for_detection_configuration.yaml new file mode 100644 index 000000000000..f6a69c0cc1b6 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_dimension_values_for_detection_configuration.yaml @@ -0,0 +1,37 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z", + "dimensionName": "dimension_name"}' + headers: + Accept: + - application/json + Content-Length: + - '105' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/anomalies/dimension/query + response: + body: + string: '{"value":["Common Lime","Cherry Laurel","Cabbage Palm","Blackthorn","Blue + Atlas Cedar","Cider gum","Common Walnut","Almond","Chinese red-barked birch","Bastard + Service Tree","Black Birch (River Birch)","Caucasian Fir","Common Beech","Cherry","Caucasian + Lime","Birch","Algerian Fir","Black Poplar","Cockspur Thorn","Common Alder","Common + Ash","Austrian Pine","Common Hazel","Box elder","Common Juniper","Aspen","Common + Yew"],"@nextLink":null}' + headers: + apim-request-id: 4e250a80-2b37-4615-b2ff-a07bc700d865 + content-length: '441' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 16:55:04 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '843' + x-request-id: 4e250a80-2b37-4615-b2ff-a07bc700d865 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c0f2539f-b804-4ab9-a70f-0da0c89c76d8/anomalies/dimension/query +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_feedbacks.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_feedbacks.yaml new file mode 100644 index 000000000000..637b1098d09c --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_feedbacks.yaml @@ -0,0 +1,35 @@ +interactions: +- request: + body: '{"metricId": "metric_id"}' + headers: + Accept: + - application/json + Content-Length: + - '52' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric/query + response: + body: + string: '{"value":[{"feedbackId":"feedback_id","createdTime":"2020-09-22T00:24:18.629Z","userPrincipal":"xiangyan@microsoft.com","metricId":"metric_id","dimensionFilter":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Amphibian"}},"feedbackType":"Anomaly","startTime":"2020-08-30T00:00:00Z","endTime":"2020-08-30T00:00:00Z","value":{"anomalyValue":"NotAnomaly"},"anomalyDetectionConfigurationId":"2fe9e687-4c9e-4e1b-8ec8-6541553db969","anomalyDetectionConfigurationSnapshot":{"anomalyDetectionConfigurationId":"2fe9e687-4c9e-4e1b-8ec8-6541553db969","name":"new + Name","description":"new description","metricId":"metric_id","wholeMetricConfiguration":{"conditionOperator":"OR","hardThresholdCondition":{"upperBound":500.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minAlertNumber":5,"minAlertRatio":5.0}},"changeThresholdCondition":{"changePercentage":44.0,"shiftPoint":2,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minAlertNumber":4,"minAlertRatio":4.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"seriesGroupConfigurationId":"51242ee0b8c72df4e537ffdfe0e8af69","tagSet":{"dimension_name":"Common + Lime"}},"conditionOperator":"AND","hardThresholdCondition":{"upperBound":400.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minAlertNumber":2,"minAlertRatio":2.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesConfigurationId":"54bdef99c03c71c764fd3ea671cd1260","tagSet":{"dimension_name":"Common + Beech","Dim2":"Ant"}},"conditionOperator":"OR","changeThresholdCondition":{"changePercentage":33.0,"shiftPoint":1,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minAlertNumber":2,"minAlertRatio":2.0}}}],"favoriteSeries":[],"disabledSeries":[]}}],"@nextLink":null}' + headers: + apim-request-id: f6b2da4c-5d3c-49ef-bf35-2d2000453335 + content-length: '1794' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 00:42:56 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '89' + x-request-id: f6b2da4c-5d3c-49ef-bf35-2d2000453335 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric/query +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_incident_root_cause.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_incident_root_cause.yaml new file mode 100644 index 000000000000..6bdf32ed9fa5 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_incident_root_cause.yaml @@ -0,0 +1,27 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/incidents/incident_id/rootCause + response: + body: + string: '{"value":[]}' + headers: + apim-request-id: 6ba159d5-8f7b-4376-9c7b-90c30c50a9d5 + content-length: '12' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 16:55:05 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '493' + x-request-id: 6ba159d5-8f7b-4376-9c7b-90c30c50a9d5 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c0f2539f-b804-4ab9-a70f-0da0c89c76d8/incidents/cc2ff8a836361371b8c6eaad71b194f4-1746b031c00/rootCause +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_incidents_for_alert.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_incidents_for_alert.yaml new file mode 100644 index 000000000000..842ef990ee29 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_incidents_for_alert.yaml @@ -0,0 +1,30 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/anomaly_alert_configuration_id/alerts/alert_id/incidents + response: + body: + string: '{"value":[{"metricId":"metric_id","anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","incidentId":"a6a239ae68312b70cf66f778a7477d41-alert_id","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"metricId":"metric_id","anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","incidentId":"incident_id","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"metricId":"metric_id","anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","incidentId":"faa12efccfc87ba03d8d757bc2f0b0c4-alert_id","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}}],"@nextLink":null}' + headers: + apim-request-id: f4fface8-5d39-4e55-900c-ede5ba2286f0 + content-length: '1179' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:55:31 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '303' + x-request-id: f4fface8-5d39-4e55-900c-ede5ba2286f0 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/ff3014a0-bbbb-41ec-a637-677e77b81299/alerts/1746b031c00/incidents +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_incidents_for_detection_configuration.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_incidents_for_detection_configuration.yaml new file mode 100644 index 000000000000..eaa729620569 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_incidents_for_detection_configuration.yaml @@ -0,0 +1,1065 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/incidents/query + response: + body: + string: '{"value":[{"incidentId":"incident_id","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"28b93e5bb5ed5b9fe7e802650b689444-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"007f2c0b9e584865226cebf5418e42b5-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"a6a239ae68312b70cf66f778a7477d41-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"faa12efccfc87ba03d8d757bc2f0b0c4-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"641584f1651248229c7ac1622054acef-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Beech","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"13b8142e4f38d38c057f687c2a6c0ff7-1746b031c00","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"89da81b38d4a9b8377b36533b396da8f-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4282006808e1493c639fb39e33b3381d-1746b031c00","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f4682287e688d43ab4307ab7d5b37738-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c87c20ce60127f65a5b5370fbe17dda9-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ec190978fe5340f3a4a3ccc36667db92-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"45f835f6379c57465b54e25de5aba8b4-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Buzzard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d197a7ce67ded42a1c3676a2a04137-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e897e7d78fd3f576c33ebd838f1aa568-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bobolink"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ceb41534df0afd897a53c8d5aeca58d6-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e5451767ef6f6806dc05a566802fe906-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8a576a78b827cc2af797f23dd08b8923-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"40f981ba9ac24ef15a8d5e54b4c95432-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c90131fb355ca64902ab7e34424faba-1746b031c00","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d4ee3adc7cb24e4d078627c2a42456b9-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3aa3b1be7110e514bd26d5be619eeb2a-1746b031c00","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fca86f4a0771df91e8256f23db59b2f1-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c1a59aab5541bebb7282cb108d29f125-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5a89c6ddb79ee3ee2737766af7b622d8-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b27b76e58a329c1467139380fd5ad23c-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Caterpillar"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"956102fc96a8be4de9467d69e2ae12e9-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0dd7026311b2b75e00d6921983458852-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4c16561b2c7996954586cb6788ebe4ea-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"718a117259a74f5fde964b9d6d9b8e83-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b52c1252c75f402ab547294538e2dbd7-1746b031c00","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9ebaf278493cd8716b31d2f9a7f5a1d5-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"67d4df1573fef9406202d449d022228e-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5c64a49e41184760a3a42f6315469ac1-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f08119c00663d14023694eccc7726b1f-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eae4a784a896ef62f896859e9c16fb88-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d08a5c225d011bba0a3a42e8f16c60-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1a0626ddd907a314f4ad65c8cd2b09a0-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a587ba21ed0913f94f43b63fcfe0df7-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"97796fa71d33ea33129206a475cc5d5c-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"218e7f9931905479cd478a9aa1410890-1746b031c00","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e90fb27d0bd794c93385eabb8a4590c8-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1444d57b7012704883e92369490109c4-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9ac4c95d5be44546d4e950980c4fb805-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5ec5f17f0b870227087a0607e0a62299-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c16dd563031ddb3b905cbb895e4e93e4-1746b031c00","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Blackbird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2cfb4cec675c68a24b32a93aeb8f83db-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfb5fef5de71fc5669189ec18e80c633-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5e6ec9e42c5a174b6c66de5b3942e6df-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Yew","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7fbc1fd179536e10c74db8fb4f2d7109-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c2056afdccbbb6c971a0e87e595fd8c6-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Amphibian"}},"property":{"maxSeverity":"High","incidentStatus":"Active"}},{"incidentId":"2f3263eff7ebec71575d55701cf91f87-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Amphibian"}},"property":{"maxSeverity":"High","incidentStatus":"Active"}},{"incidentId":"fa02a59a9da76f3681e37b9cf1ba3bc1-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Amphibian"}},"property":{"maxSeverity":"High","incidentStatus":"Active"}},{"incidentId":"0e2f472c7dbd692fba8923c2f7f09c90-17465dcc000","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Amphibian"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"48b5553b21d63aaf2eda299da258e7a9-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"ed1945350561ce57fd45860c49e7605d-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beetle"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"2e14a130f967b3764d434f470ed90c79-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bat"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"f0ec54044b14f05722c1dd6e9e2ee770-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bat"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"5800a7718cdd105d3df4b169401db1f7-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cea2781e2ebb17c20b3614bc901e7234-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0d1d1d05595eaf8b1eb161f48dba32bc-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a37d0c3ae699587692341d47831cae5d-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d5c4be357ab910ff92b0a810e36b3c1-17465dcc000","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"African + leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"49db17e1cc7e839a3fcd995b8ee992e5-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5e693c0f522a11fb7938803e3386d43e-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0b46a044b6d592a45e2508d584bf16a3-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8574a6fb0f5124381263704c82ab735f-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"86e85ca32b3ff7270a89c46b5323c208-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a57a441ee18b1a781e2344706190b8d8-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9727ea3afb9cdbd7554b49377127f822-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1be634e8680f7f41f3070963a21a8ce2-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c3ea31010e92e5d097ace4053ff7a939-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eaf74390f3baf2f348e9d782d171c461-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2f2e19710ef2d44fc1cd59ff9796c753-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e04f109adbf4ca9b12da1583d542b7b2-17465dcc000","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"799056242ef6d4822523bc6bfa62f682-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"589e1ce7435e10c4fd25dcf44e6008cb-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9664d1509d5c9c6cdab967a48ed43a7c-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"67aab648e26fdf49bc77a78e764922ec-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d5fe255778a3022c66f4ed65ae45446d-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00917e01b8bc5145a2ae207a8029fd11-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e465d7ce2eab5e14ce38a39e6a5c0a78-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bald + eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0ae1648cffdbac7ef5ff8a98a78e60c4-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"497d898821166983b0566e842ffb99ed-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ac0a0938a8a3ff6c0a35add8b693ccca-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"813c0673a0ecc31b731a8f4a25cdedc0-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"85ba18587dd0cf7fa6b685cfc00731f3-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"df208b3f67f60ba6d0f5b0f803f4bb1f-17465dcc000","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0f828a31e8b181794221615367e72527-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Arctic + Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c9ec37ecb6f7529194c90763c40b7610-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0cc8d82361998d912a49eeaa5a568200-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e4ab22586b41c4c80081129424417089-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c60bb8d0b5d45bba89ecf2745fd1787d-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"113446a1c673896502f0526dea10525c-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9e1d9ffc4c247b2bb4342e458387b481-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"029caf6cc2201f710f5f8e7192082a76-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"586a065eec07588b1c993701f1eb2c1f-17465dcc000","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Black widow spider"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"94b1070d82d2a24f68ee459fb4dd031f-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3c37b8155456ed55c9a06f2d4acfdcfd-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"da6bdb54a97d59967cdb86a188a80578-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"77a5c068834bf068189b0df48219028d-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8716aad622b2fd5754ed2a7c98a57731-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b8ec7c3522535439f6cb78e914bfa1ce-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f55e141d7f77eefc2395e268af311afb-17465dcc000","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d56df63ed4f3851ad3b285815e29fac-17465dcc000","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f11914e0219cf41f777de203faff2063-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6509b04581eaa307e69f9a01a4023998-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"73561fa50ad6459fe0b8f9bf74e30a81-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b296e03e2dccc33ae4976c9f27b89857-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7573aca2c2b1514604372e386ea4d932-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b051b82f932c4273ed698738b2df6cac-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"629c77943696242a4e5f75f13c9c6e95-17465dcc000","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"63630c3417929aa30984db5598805523-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"384e438bd8d5b1f60ff22d4e729cd9b8-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1290959144c3ded4ff2a284ba94c41c9-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e765a24fd08a5208c8307c292241552b-17460b66400","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"008e03333f13ef526fab59984d8636ea-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a79eb0471dab655862a6570f9642081-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4ac42cf930d0d72fe3bda863d8f68ade-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b5227389258ac73b5f07a4425ca1da43-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ceb41534df0afd897a53c8d5aeca58d6-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0311e8637b16ec22f15ee700e3d35459-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cc40511a7cb745ff811151ca54ad5ba8-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f1589049fa2c7bb81631737442da2794-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"40f981ba9ac24ef15a8d5e54b4c95432-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2cba0250b334090391b23a888cf67792-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed6b809d9445e7c1b8dafe76e85d536b-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Canidae"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6b5c2510e20a73926cb189d84c549d1c-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ae0d08377b9ff3a7e48d64d4e2b83fea-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0557b07b8eb21c8a6e6742e5ff6d4808-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Camel"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"20286302ad28a0989b0c291090ce0508-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f1eafda089ba4d5f3fb7584e69955449-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Beaked + whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9a591f19a631a8cfac1b707ea4f761a8-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e525a81b583ed149e12ed726f74b0f74-17460b66400","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"860fa9152017d7b59ac8c1986fb5f481-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4a3ca719eaee5f889f65bd7d25a8b151-17460b66400","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"08a28a4db963e7f4a878da52cd18dc17-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f08119c00663d14023694eccc7726b1f-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a4fc06dccd0b0de8a577e357ceee2a3d-17460b66400","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa281ae71357208f14ccb83392ed5d4c-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1ccde4825f1a3e82dd8dccc6e09cfaa4-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1444d57b7012704883e92369490109c4-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1ed17a92fa6951c3d7bd3388c501d61f-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"17f3f388c234cfd7e535ab51ac4a1b4f-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Animals + by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"175ff739f5f490ea24884b6d1e8a9d0a-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8126f81c5c24ca5dee3ec1fb69ac256a-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3d4126ed79bf9645d8fdc26dcbe988b3-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f4682287e688d43ab4307ab7d5b37738-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b6240cb868a60d25a0eccc0102be31b1-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cb006f689378e1dfc4d73d81442bf5e0-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f167210571d3da66402f47547c9b8b1e-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Capybara"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e510c539547f7010234097bf5695be08-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a6dcf69de6fcc8f83bfee4ff158d5699-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1bb9530e7d6e50a21229bbf8ec399b6d-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4d2faf4248f7a8a313b0c481d803e542-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"06624c901b2635ed1f4ce44fb5f2e4cb-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0bf008e7d532ebe7455360188fb64dc7-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"28b93e5bb5ed5b9fe7e802650b689444-1745669ac00","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"7b3ff7d996e69abb8152398f72e2bde3-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Beech","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"394981a084bb6236be3c93b5e169862a-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"34e213f3dabd5b618de8864f5fc191b9-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d3d6770e7254b139e35040b66506b81-1745669ac00","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"760b8242d0edf0c881453b714fa73b09-1745669ac00","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Boa"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d3a4b8e4810661e5ab1be9eb594b8539-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"92208ec1a39431322e6cc6aa8563017f-1745669ac00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"883d6deade06d2e7196b4f4be3688e19-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cecc0a8f12ab522e9b7b0c283df72b54-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00917e01b8bc5145a2ae207a8029fd11-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ec694c925571ab2b4c3ce88422cb3665-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cc40511a7cb745ff811151ca54ad5ba8-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"497d898821166983b0566e842ffb99ed-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1e18994824d880a47de4f87cde3018c4-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"45cfc3017d05be4b1c683e693ee55796-1745669ac00","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"32a5ec4fbec26a387421648d3b3cfd64-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81bc0798412f4dddab87bc1f842bdbbc-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8cc3eb717f3884f7a00bc6d93b04e973-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"646106ca10935841887a3568a2add46d-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"db4f303bfead652ac2a0c00960503fda-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f0dce8270a17c3c1c0d5abd349564e3a-1745669ac00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9ef6144ffc4ac92548edb0da3e1439bc-1745669ac00","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b52c1252c75f402ab547294538e2dbd7-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e1741ac8bcc5a8f5b17b1086b4a439cb-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eca6322c2e167d6b68654e4485f2e0ed-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e33eed0b14062992cedbe7a624f10301-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5c64a49e41184760a3a42f6315469ac1-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"73561fa50ad6459fe0b8f9bf74e30a81-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0899b6d37863f294ffaab15dc887f720-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Butterfly"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"267f0c5ad4c1b049d6fd59a784d6c01d-1745669ac00","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"403429859e947f42db3d660b1fe00182-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6b5c2510e20a73926cb189d84c549d1c-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"61ab275a61cc0616372112e406ffaca2-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e8751dc0ea26c1d692bedc5ff99723cc-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3badd8a82076e4d3c4a4b52e1df933c4-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"445242c0752c481a737a22b37e42e875-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"010e484142c72bf862168db80cda5ec9-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f7a6e4d4b0bb3715751301f1b5c3a406-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1b1320237170cca2d4bfcea44cb9acd5-17451435000","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e897e7d78fd3f576c33ebd838f1aa568-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bobolink"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4ac42cf930d0d72fe3bda863d8f68ade-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b6240cb868a60d25a0eccc0102be31b1-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3aa3b1be7110e514bd26d5be619eeb2a-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e5451767ef6f6806dc05a566802fe906-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d28097d28adb2cc7649bb3ba70a308da-17451435000","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Black + panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"afed89785c1c4e9eeed3f9569a7dabc0-17451435000","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c0c51e491014a195220888938b315d2-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d8ca9275fac073d5f48d2789fae060-17451435000","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bovid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c57f69fbad080df7ff81ec0fbf41c5cd-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d4ee3adc7cb24e4d078627c2a42456b9-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"80a1891b3f02d7c73625ff0c7fe62f06-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c60bb8d0b5d45bba89ecf2745fd1787d-17451435000","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e4ab22586b41c4c80081129424417089-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa4283ffb1575e891b37f4aa2dea43d3-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e525a81b583ed149e12ed726f74b0f74-17451435000","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8cd351bc43b4cbfad89ed491e7dbc5cd-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"abfd13865624e1caa3695f04cc0d6198-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cacb59ef9035f7aa241311a0aa735381-17451435000","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d08a5c225d011bba0a3a42e8f16c60-17451435000","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ca092b76397d0951a189ca60a61b16b9-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6cebbedb6fe1cf345d1120beeee9a133-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"218e7f9931905479cd478a9aa1410890-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3ac2f16d58ce1784eac5256e29bf2f0d-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4c795cbc9707d8bd5f5aab742fd1c5dc-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b56305921e5ffe357256bd11f7bc9b95-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a66e6977f6d4e9b85c20d5a59cd6eb2-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0bf008e7d532ebe7455360188fb64dc7-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d2a5002cd00ebec39e06ad75d7f3f8b9-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b0905459e304831ab362b1d7829116e4-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Antelope"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"fe45dce953e20b9246436ad3c76a7c4e-1744c1cf400","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Beech","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6cf9524292757836c2eec2e14fdab244-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4fd4859265b5cc8c1c1b3d4a0e0a509c-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8f08377171fedd730430d81bea52ff6f-1744c1cf400","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Beech","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c00f3386c4a85b4d7dad96982fd1313a-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e33eed0b14062992cedbe7a624f10301-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5ee5293ccf23456c55183069a4b9ccef-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e04f109adbf4ca9b12da1583d542b7b2-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4282006808e1493c639fb39e33b3381d-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ec694c925571ab2b4c3ce88422cb3665-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"883d6deade06d2e7196b4f4be3688e19-1744c1cf400","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"589e1ce7435e10c4fd25dcf44e6008cb-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6455a499b1b00a0389ee27491e92d535-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0899b6d37863f294ffaab15dc887f720-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Butterfly"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"40f981ba9ac24ef15a8d5e54b4c95432-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ea382499f4552fba68eeb6c838926822-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f078dd77fd1aedb38b90d541650c2d56-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2a412de72a9a5ac09d504b685a9a8616-1744c1cf400","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Arabian + leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed9d725f6ef9e4510728130d0fb66505-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Box jellyfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"83257ba37033f7616c05045cb569f028-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8e382c2c1687bde8d7c4c86c78e23ee3-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfb5fef5de71fc5669189ec18e80c633-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1290959144c3ded4ff2a284ba94c41c9-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fca86f4a0771df91e8256f23db59b2f1-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"adf8a463bc86330ac985ace7ef4eaace-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7419a983bb919bd95e884a8a7b595897-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8094385bf71423605b1366eec41ae3d6-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00b89c31c14766a9cff07ec7c4793042-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f906e2ea59ed69704700dd6f8e45b66a-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"673951425995df633118682eaf281b96-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Arctic + Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b752711616dce27e2fa5fedf0549047a-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4738dd46b9347e9bef2dd6b58235a1d6-1744c1cf400","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c792d0c369cc488599f75372cf06867d-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d3a4b8e4810661e5ab1be9eb594b8539-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"770f054fc609c2f904dcf6fe7ce0427b-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"921fe6c8b8c7b72bab3e867694be3f10-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3291f08abbdb346c42ca6530d4a7255a-1744c1cf400","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eb3114767a3cb51b4877574839fb5e1c-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b296e03e2dccc33ae4976c9f27b89857-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fee9eb2fede2af12f19716e1ff2c1062-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ca092b76397d0951a189ca60a61b16b9-17446f69800","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa755a6b60dd4a3d0e8e2148ee0593df-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a79eb0471dab655862a6570f9642081-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f3a5ab87d5809aa1faba46cb958e9db1-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c0c51e491014a195220888938b315d2-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"bb32e5d8b333a6943d6a4cec8c3101de-17446f69800","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fc45360e8e7a7153d3e252b45a3d9044-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9fb08f3aebaa8523c0c2bcd81b876bc5-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4e7c2e8e78265269da5ad8ba515caa3b-17446f69800","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"956102fc96a8be4de9467d69e2ae12e9-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cd3f08c10733898ace1decb53264ba2d-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Cat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a06906c239e3ce2c74f4fd7f3ed006e-17446f69800","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Canid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ee651cd24328a73f7d02fa4bc4c8b60b-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b93f657e9633927a1155cbc6ed4bf5d5-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c11b4934111a0694c0fcf8718cd314ad-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"072bc0f89f39807f4afcdf324fcf4b37-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"718a117259a74f5fde964b9d6d9b8e83-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3305c4b4355ae50f0c55eacb257c1e41-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"757bac39288686f48f4653b544d05ea1-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"553f5e328d6f8fa013d367b456b4b458-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Booby"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"77a5c068834bf068189b0df48219028d-17446f69800","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"11bd7d16bdd2ce64639a3c2296646fad-17446f69800","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"218e7f9931905479cd478a9aa1410890-17446f69800","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f11914e0219cf41f777de203faff2063-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"384e438bd8d5b1f60ff22d4e729cd9b8-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"83dc1243970f2d02251890e686b35683-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"African buffalo"}},"property":{"maxSeverity":"High","incidentStatus":"Active"}},{"incidentId":"623f8a4e5db7f6dceddc5eee5e0580f5-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"10b650ca149ca53aa787cd482718838e-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"22959a995b07fffa7418fa717520b3f2-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"African + buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"641584f1651248229c7ac1622054acef-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Beech","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d7bf4b69239f8e166506d2567eb2f98b-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b0b597eb5866682bb2d241cbf5790f2f-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"African + buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e7a36ca6dca27257e34b70ab9e7dccbe-17441d03c00","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"34e213f3dabd5b618de8864f5fc191b9-17441d03c00","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a6a239ae68312b70cf66f778a7477d41-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c906a2a04e8fe6ee0f4028518927b725-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4282006808e1493c639fb39e33b3381d-17441d03c00","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"010e484142c72bf862168db80cda5ec9-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1444d57b7012704883e92369490109c4-17441d03c00","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0199a7484859345433ce3f09ea1e16e9-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b296e03e2dccc33ae4976c9f27b89857-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0b8a3b066088da639be5b85a2a9f20b5-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d5fe255778a3022c66f4ed65ae45446d-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ac0a0938a8a3ff6c0a35add8b693ccca-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed8c8aab50f3cd57619d7878079998f1-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0237fe843f8d155aa0cfb6d58ee00be7-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4a866958634752a389e2c252b7b41b01-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"45cfc3017d05be4b1c683e693ee55796-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b6c603d31e3c5ad6526cbd081eab1c10-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e4ab22586b41c4c80081129424417089-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"647e0ce96cebdeb7234156bf4daa10a2-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"American + robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d206065246c00ab74315b4298da76e1d-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfe4e3e59319c55d39e42f454e70a3e0-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c57f69fbad080df7ff81ec0fbf41c5cd-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d2a5002cd00ebec39e06ad75d7f3f8b9-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c9ec37ecb6f7529194c90763c40b7610-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1c8d30b1d369afebf8c7ac8693bc3941-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0cc8d82361998d912a49eeaa5a568200-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa4283ffb1575e891b37f4aa2dea43d3-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"74052e4eb1b830f7e9645f9550f263af-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"646106ca10935841887a3568a2add46d-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2702b876a1c7f4b3b0b4f77c8eab1005-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d08a5c225d011bba0a3a42e8f16c60-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f55e141d7f77eefc2395e268af311afb-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"baf21d62280034d070c4b9fd596225c6-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"315b680fa4dc2372fa859d0dd1103162-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"921fe6c8b8c7b72bab3e867694be3f10-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2a21a1f0f4ec1006cc974a4f0ec21d50-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3655be51dfe0bc729e81a6f4c8299635-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ec190978fe5340f3a4a3ccc36667db92-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eb3114767a3cb51b4877574839fb5e1c-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b7dcdcef99b523f2ae9eb58b44bc9d59-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"629c77943696242a4e5f75f13c9c6e95-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0f408c61757d397f1d354b8eb6df1558-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"American + robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"90d8fcd4293881f976bb60e4de7b4472-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"06624c901b2635ed1f4ce44fb5f2e4cb-17441d03c00","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0bf008e7d532ebe7455360188fb64dc7-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b2ed5f827e7ab8113a530113d32fe3a4-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"e765a24fd08a5208c8307c292241552b-1743ca9e000","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3ac5de822c4163e11dbc5a10bf64011d-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"28b93e5bb5ed5b9fe7e802650b689444-1743ca9e000","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f265881f5532c5ab727abb669279de14-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1592e8cd9b52ed9e03cda73efd648f6b-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Beech","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"85936fe51247075a7e655820014c2896-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"834f6082b8e1bae6132721dc25da6e28-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eca6322c2e167d6b68654e4485f2e0ed-1743ca9e000","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7d36963cf78c2837046a3ae3d12b2aad-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3b8719deb009ebe30db20298c15ae6ba-1743ca9e000","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2e3a6cf5aee279d4f4231c5f0928cbbc-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8ef54f6646f2928049e03eaa745a39cc-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"050933599751744f309c59d0c79f750e-1743ca9e000","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9dc2e60edb58ccbe08a19ded257fdcf6-1743ca9e000","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1f6f3cc13f5225df938d2ab2074dcf5d-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ceb41534df0afd897a53c8d5aeca58d6-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a833e14118e95e40cb4fc649aa5e4127-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"85ba18587dd0cf7fa6b685cfc00731f3-1743ca9e000","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4a6b2318eba8e4259bec52a48fbc77bd-1743ca9e000","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"113446a1c673896502f0526dea10525c-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c1a59aab5541bebb7282cb108d29f125-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f906e2ea59ed69704700dd6f8e45b66a-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c60bb8d0b5d45bba89ecf2745fd1787d-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0670f9cf1b5cfc0e43ab92d5172040ce-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"37bd829dd98c9659b2a80f5f94ce7395-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Aspen","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81912614ff842321c98f3702c4bbffa6-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"abfd13865624e1caa3695f04cc0d6198-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cacb59ef9035f7aa241311a0aa735381-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"47f133eb98f85606cb31cef7cecfdbc8-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"79fea5b88292c559677ec40c8656ed01-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"267f0c5ad4c1b049d6fd59a784d6c01d-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b56305921e5ffe357256bd11f7bc9b95-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"76cfdfd13767fd6041d5a3fd54900e99-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"74d84982464a96ff3eb95a4d5b1a0f39-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cc2ff8a836361371b8c6eaad71b194f4-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"7c9131b6e66d512a4681d0ee32a03119-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"3d4126ed79bf9645d8fdc26dcbe988b3-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"743e56b6e3ed836b78218e7a13a34717-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ca092b76397d0951a189ca60a61b16b9-17437838400","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"760b8242d0edf0c881453b714fa73b09-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Boa"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"218e7f9931905479cd478a9aa1410890-17437838400","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ec190978fe5340f3a4a3ccc36667db92-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"67aab648e26fdf49bc77a78e764922ec-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4ac42cf930d0d72fe3bda863d8f68ade-17437838400","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3203dffdb89ddff2c27902a867f95e0a-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3191767e8f21ed6e40e6678cae544533-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ac0a0938a8a3ff6c0a35add8b693ccca-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0998c5438e745065f2b4312721c48b8f-17437838400","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2b045d59e68ef32d963f94bc2ff62c8a-17437838400","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e212f5fa523c3a1f0f06dc3f81620b4d-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1290959144c3ded4ff2a284ba94c41c9-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b6c603d31e3c5ad6526cbd081eab1c10-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8cc3eb717f3884f7a00bc6d93b04e973-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5fc810580695e29c1998f3949e78d2b2-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bali + cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6de49a1e7edb7479f799087586930cc8-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"de29791f0380207c3518aac867974a8c-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"78f30c2c9022b041c64d3ff2a032cd43-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"dcacf66333561a036f6826116a5d009c-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"96062cadf43991e36b9e235ed44a98bb-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c11b4934111a0694c0fcf8718cd314ad-17437838400","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f50d5b7d1c294a5efb380caf2dcc61be-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"718a117259a74f5fde964b9d6d9b8e83-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6ab218766d4a08224f812db22293ef3a-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0b8a3b066088da639be5b85a2a9f20b5-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"589e1ce7435e10c4fd25dcf44e6008cb-174325d2800","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a79eb0471dab655862a6570f9642081-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8310ebe938dd2605f1b71235f0e38bfc-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0899b6d37863f294ffaab15dc887f720-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Butterfly"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8e382c2c1687bde8d7c4c86c78e23ee3-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"233e057d416a813f51c9a0b39073831f-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1f6f3cc13f5225df938d2ab2074dcf5d-174325d2800","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed9d725f6ef9e4510728130d0fb66505-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Box jellyfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d385e18843f853af2664557f89fd447-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0bf008e7d532ebe7455360188fb64dc7-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c1a59aab5541bebb7282cb108d29f125-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"891ba16be7731f96dbe2ed07945e3ad6-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f0dce8270a17c3c1c0d5abd349564e3a-174325d2800","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ee651cd24328a73f7d02fa4bc4c8b60b-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"029caf6cc2201f710f5f8e7192082a76-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfd0f6969d39b8687f10f25da91e4ba3-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"474d11128652ea37fb44ddf503ebba27-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2c8aff6ba40bf32e3014935dee92125f-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1ccde4825f1a3e82dd8dccc6e09cfaa4-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"629c77943696242a4e5f75f13c9c6e95-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fee9eb2fede2af12f19716e1ff2c1062-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"267f0c5ad4c1b049d6fd59a784d6c01d-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a66e6977f6d4e9b85c20d5a59cd6eb2-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e510c539547f7010234097bf5695be08-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"956102fc96a8be4de9467d69e2ae12e9-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4e7c2e8e78265269da5ad8ba515caa3b-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c87c20ce60127f65a5b5370fbe17dda9-1742d36cc00","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"801cbfd6d996cfd00949ffa345080ba0-1742d36cc00","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed8c8aab50f3cd57619d7878079998f1-1742d36cc00","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3d39e2070abb949ca864f2dcbb4b5639-1742d36cc00","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1e18994824d880a47de4f87cde3018c4-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f078dd77fd1aedb38b90d541650c2d56-1742d36cc00","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a96bdaaa64823010e2b5d7ee79c65aca-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"92208ec1a39431322e6cc6aa8563017f-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"85ba18587dd0cf7fa6b685cfc00731f3-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8f64cdc61e31c6d42cd9a9a6dfbeb66f-1742d36cc00","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1290959144c3ded4ff2a284ba94c41c9-1742d36cc00","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3d96be54d0cb253fb24fbbc18d7764b3-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfb5fef5de71fc5669189ec18e80c633-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cb006f689378e1dfc4d73d81442bf5e0-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfe4e3e59319c55d39e42f454e70a3e0-1742d36cc00","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6de49a1e7edb7479f799087586930cc8-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"32a5ec4fbec26a387421648d3b3cfd64-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"44f64dc46d59c50f1ba141f1c422221e-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"de29791f0380207c3518aac867974a8c-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c60bb8d0b5d45bba89ecf2745fd1787d-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b27b76e58a329c1467139380fd5ad23c-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Caterpillar"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"84315bec8758e7b15e746485e380a861-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"29ddf85538e817259553cbe5a6bb41e6-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f5d01fdc7e8b80a553b92e0e3f3dd01b-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4701e0dbe7b34127694f891d13a986d5-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"61ab275a61cc0616372112e406ffaca2-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a38a9fdbe5f8326555e64ae57b93d59e-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5f777368cdb6ab0d463884af960ec394-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"African + leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7e2856d696bc35f4c1fc02725ea05cab-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d54763d71a14332d2761819be6ed76c8-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4d2faf4248f7a8a313b0c481d803e542-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"06624c901b2635ed1f4ce44fb5f2e4cb-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c9131b6e66d512a4681d0ee32a03119-17428107000","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"e7a36ca6dca27257e34b70ab9e7dccbe-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"84407ce8d5790fa14e2b95a96a49a666-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f3a5ab87d5809aa1faba46cb958e9db1-17428107000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b5227389258ac73b5f07a4425ca1da43-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cc40511a7cb745ff811151ca54ad5ba8-17428107000","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"afed89785c1c4e9eeed3f9569a7dabc0-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c7fe6ab3690d4c937beca804e9d1f606-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f1eafda089ba4d5f3fb7584e69955449-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Beaked + whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cd59fe5193a104b489b27841b08858d3-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"82ecc8943f6093e6bf82cc9627f41d76-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f034bf7918142d6f1f33a7ab6af799c1-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"371d97a97ca26938bd6e7c44e4b7e7e2-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"78f30c2c9022b041c64d3ff2a032cd43-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4c16561b2c7996954586cb6788ebe4ea-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"80a1891b3f02d7c73625ff0c7fe62f06-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"886217d74276387ab304e87813cebadd-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfd0f6969d39b8687f10f25da91e4ba3-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"673951425995df633118682eaf281b96-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Arctic + Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"08a28a4db963e7f4a878da52cd18dc17-17428107000","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2a1d4188f8f452f64e8bbd6b5a97fb01-17428107000","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1ed17a92fa6951c3d7bd3388c501d61f-17428107000","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"63630c3417929aa30984db5598805523-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9dffafa3229c42ceadfaceb982dce356-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Amphibian"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"658146886f9eea1541904e20c652c836-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c00f3386c4a85b4d7dad96982fd1313a-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2702b876a1c7f4b3b0b4f77c8eab1005-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a7e16b7a48054da43017865ad9dc3210-17422ea1400","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Animals + by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0e37cdacc29175a1b5689e9fa6ff83f7-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e88ad7e1936c819c411ebf14386ac9c5-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"050933599751744f309c59d0c79f750e-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"563b06ee98279cfc71de4ad035e7fcfd-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0199a7484859345433ce3f09ea1e16e9-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3191767e8f21ed6e40e6678cae544533-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a79eb0471dab655862a6570f9642081-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"40f981ba9ac24ef15a8d5e54b4c95432-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5fc810580695e29c1998f3949e78d2b2-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bali + cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"99c0098e7258f71a589792798dff740a-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"80acd5e0b81aedacfca89429e7ceee44-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Ass + (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"497d898821166983b0566e842ffb99ed-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3203dffdb89ddff2c27902a867f95e0a-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"34cb21b660d13bacaa3db87802db364d-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f1589049fa2c7bb81631737442da2794-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed9d725f6ef9e4510728130d0fb66505-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Box jellyfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d219b1779ddaa3b962d8978d75d39b46-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c0c51e491014a195220888938b315d2-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3d27926af7aaa1dce10dd73cd5943ce4-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b02841db79eecb30f9c92376f3d6a9e4-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"32a5ec4fbec26a387421648d3b3cfd64-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e708c701adddd5fcb0385cf6acaea57c-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa4283ffb1575e891b37f4aa2dea43d3-17422ea1400","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81e3bf1c8520eebf1245c1b7426a6512-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Aspen","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4e761ca5ea08cd86b6dcec5658114126-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c0d6c24a636d6849bd12871437de14f7-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2ba2ff597c78d3a417fd9d6750caf884-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"86c22e0983d57bce042ecfa085bfe1d8-17422ea1400","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f55e141d7f77eefc2395e268af311afb-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a0a1de83d9142d3cdbe20b516baa3e82-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d567c6254bcc0c08123850e26079c3c4-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"46b06ed6d6ccccfaeb938344dbe828c3-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"06624c901b2635ed1f4ce44fb5f2e4cb-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4a866958634752a389e2c252b7b41b01-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"387eccccff53934168d89930e3f2ef7f-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9f790c1c2dc76b4768e944e8a6becaa2-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a076d6d34994c478bcf5a71a0e81e7d-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Animals + by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6867d51ce45b8a136a1ce1bf720322de-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"30cd5834fdd569759064939a3995f8db-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"dd1478bd9f815bba0c2c7730a6da5a1c-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2e3a6cf5aee279d4f4231c5f0928cbbc-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"863353916661912880e8214df7a0237f-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ceb41534df0afd897a53c8d5aeca58d6-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3655be51dfe0bc729e81a6f4c8299635-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f11914e0219cf41f777de203faff2063-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d5fe255778a3022c66f4ed65ae45446d-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"883d6deade06d2e7196b4f4be3688e19-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"67aab648e26fdf49bc77a78e764922ec-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b5227389258ac73b5f07a4425ca1da43-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4ac42cf930d0d72fe3bda863d8f68ade-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"127c8ee94bac1880ef881d5d506b4982-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8a576a78b827cc2af797f23dd08b8923-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0998c5438e745065f2b4312721c48b8f-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"175ff739f5f490ea24884b6d1e8a9d0a-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0b8a3b066088da639be5b85a2a9f20b5-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"813c0673a0ecc31b731a8f4a25cdedc0-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"44f64dc46d59c50f1ba141f1c422221e-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d385e18843f853af2664557f89fd447-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4e7c2e8e78265269da5ad8ba515caa3b-1741dc3b800","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"40b821388a636fb151e7d1e08a51177f-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9e1d9ffc4c247b2bb4342e458387b481-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c1a59aab5541bebb7282cb108d29f125-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"843c3ff07438866b5ad48efca724bc9f-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0dd7026311b2b75e00d6921983458852-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e4ab22586b41c4c80081129424417089-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fc76c9f76d3f13a47c9ae576507dd3de-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1c8d30b1d369afebf8c7ac8693bc3941-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfb5fef5de71fc5669189ec18e80c633-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e62c7497e49e422ddb625daea6f214d5-1741dc3b800","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"82474748e69090743d5b0c4df8c1186a-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"63ed7dbaabf9e95124ee8709a80ff2b1-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"85d6b2dccc1d18213b3934c0c009550b-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"371d97a97ca26938bd6e7c44e4b7e7e2-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6cebbedb6fe1cf345d1120beeee9a133-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"34104bb5a81001d1f3057e2555e4134e-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"63630c3417929aa30984db5598805523-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"76cfdfd13767fd6041d5a3fd54900e99-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"384e438bd8d5b1f60ff22d4e729cd9b8-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e510c539547f7010234097bf5695be08-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"59671e17866bc003f281055d01d7f857-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f7a6e4d4b0bb3715751301f1b5c3a406-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6ab218766d4a08224f812db22293ef3a-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"09951ce44a4ffa4c7a0be72ef7a3af19-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3191767e8f21ed6e40e6678cae544533-174189d5c00","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"788eab73eae508789c7be69f24106328-174189d5c00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a2d062cb9e1d03b83c18230120ed224d-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6455a499b1b00a0389ee27491e92d535-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"05a43c9a57a9ccb32aa4ed865adf4471-174189d5c00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"893eb8d20af179e6209f21c92a970bd1-174189d5c00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ea382499f4552fba68eeb6c838926822-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2b8eee6a985e6cfe252b6f55c8f8c693-174189d5c00","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"bf16edfb65f4cc59775876306dfde327-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"496f7401bd0f2e633390bad5b4cfe1a3-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c4a6e5fe6be6b97af3a9b891bc9eebf2-174189d5c00","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"788b86ea0242843d8e3554bfe14d1f36-174189d5c00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"113446a1c673896502f0526dea10525c-174189d5c00","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"61ab275a61cc0616372112e406ffaca2-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"74d84982464a96ff3eb95a4d5b1a0f39-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d4ee3adc7cb24e4d078627c2a42456b9-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3d96be54d0cb253fb24fbbc18d7764b3-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3d4126ed79bf9645d8fdc26dcbe988b3-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"010e484142c72bf862168db80cda5ec9-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"12bed2fa85a98a01bac8dd0d79f7a378-17413770000","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed8c8aab50f3cd57619d7878079998f1-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d197a7ce67ded42a1c3676a2a04137-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3daeef64a07dabc23c84eb45cd9a5f90-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1964ee989d55fcba205d68d9214ddcd4-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8e67be34ccd8a92caee9e341aaf39b41-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"African + leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"46b06ed6d6ccccfaeb938344dbe828c3-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b792e26b431147faf610bb0f11509090-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fee9eb2fede2af12f19716e1ff2c1062-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c9131b6e66d512a4681d0ee32a03119-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"d7bf4b69239f8e166506d2567eb2f98b-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00917e01b8bc5145a2ae207a8029fd11-1740e50a400","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d567c6254bcc0c08123850e26079c3c4-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a79eb0471dab655862a6570f9642081-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"478bfaf9cb37c8ffce71c0f7af317bd4-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f7a6e4d4b0bb3715751301f1b5c3a406-1740e50a400","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b6240cb868a60d25a0eccc0102be31b1-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"80acd5e0b81aedacfca89429e7ceee44-1740e50a400","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Ass + (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e5451767ef6f6806dc05a566802fe906-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"801cbfd6d996cfd00949ffa345080ba0-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c87c20ce60127f65a5b5370fbe17dda9-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a833e14118e95e40cb4fc649aa5e4127-1740e50a400","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d28097d28adb2cc7649bb3ba70a308da-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Black + panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"813c0673a0ecc31b731a8f4a25cdedc0-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d219b1779ddaa3b962d8978d75d39b46-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ac0a0938a8a3ff6c0a35add8b693ccca-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e212f5fa523c3a1f0f06dc3f81620b4d-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2c51e02ff667c860d9afd5217d575949-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"44f64dc46d59c50f1ba141f1c422221e-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"527b1817f9aa3bfa9e54734ee2f2ea42-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c57f69fbad080df7ff81ec0fbf41c5cd-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8094385bf71423605b1366eec41ae3d6-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"029caf6cc2201f710f5f8e7192082a76-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3305c4b4355ae50f0c55eacb257c1e41-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"63ed7dbaabf9e95124ee8709a80ff2b1-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b52c1252c75f402ab547294538e2dbd7-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4738dd46b9347e9bef2dd6b58235a1d6-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3291f08abbdb346c42ca6530d4a7255a-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0bf008e7d532ebe7455360188fb64dc7-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b2ed5f827e7ab8113a530113d32fe3a4-174092a4800","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"dda410546adb8260b7a7e363773c8e42-174092a4800","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a3dc1f92897a2b637fa8144fb1aefc2a-174092a4800","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c9613108a6390f7987ce02a5eb5eeeaf-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"18618a675da9f98c370b02c228536120-174092a4800","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"20a5e8ace6f8f6cdd30a05f3aec3eba6-174092a4800","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2702b876a1c7f4b3b0b4f77c8eab1005-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2a21a1f0f4ec1006cc974a4f0ec21d50-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"883d6deade06d2e7196b4f4be3688e19-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"589e1ce7435e10c4fd25dcf44e6008cb-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eb3114767a3cb51b4877574839fb5e1c-174092a4800","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2a1d4188f8f452f64e8bbd6b5a97fb01-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4a6b2318eba8e4259bec52a48fbc77bd-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"276e84aaa2fb05b90ac9de7c7718d439-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f078dd77fd1aedb38b90d541650c2d56-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fc7be04d67b32fd3ceaa6190db817f82-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Arctic + Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa8d10639f64317a08ca3858aaff4f33-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0da4f4ef4db7db9ba355c66e911e2b35-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"10a2fd212719f21a164a01d266c02b9e-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"78f30c2c9022b041c64d3ff2a032cd43-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0dd7026311b2b75e00d6921983458852-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4a1064eadd45877ace521127a421a27e-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"61ab275a61cc0616372112e406ffaca2-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9158283c7c17512155c3529bcec41328-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"02f6731132bc11fd8609d89e7eefd6ba-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"643e3a849425698b44c4c612a40dbb77-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6867d51ce45b8a136a1ce1bf720322de-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1ed17a92fa6951c3d7bd3388c501d61f-174092a4800","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"207433989591c50e00dad9f3d4191cce-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a66e6977f6d4e9b85c20d5a59cd6eb2-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4d2faf4248f7a8a313b0c481d803e542-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"43b41958443f7feb303aab3ccce585dd-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c9131b6e66d512a4681d0ee32a03119-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"8f1141f1960920d22c2707879d014626-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"31c62f2f522db8dd0e1f4d654f16d6f4-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a310f9f4ca025fd13082e4af39cddd86-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fce08acbff5e1b83c3be5bd1524ac9cf-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5b79c442deadc226a779a962d8f6dbe8-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"834f6082b8e1bae6132721dc25da6e28-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5715372e5c54f3920ee9c59f75344dc2-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a7e16b7a48054da43017865ad9dc3210-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Animals + by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9dc2e60edb58ccbe08a19ded257fdcf6-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"34cb21b660d13bacaa3db87802db364d-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2cba0250b334090391b23a888cf67792-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"06624c901b2635ed1f4ce44fb5f2e4cb-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0199a7484859345433ce3f09ea1e16e9-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e212f5fa523c3a1f0f06dc3f81620b4d-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f400363d008aca387740a3a39b8684c9-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6de49a1e7edb7479f799087586930cc8-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00b89c31c14766a9cff07ec7c4793042-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0237fe843f8d155aa0cfb6d58ee00be7-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"956102fc96a8be4de9467d69e2ae12e9-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5f7de3e82ef25e6001194d66b26d0bc9-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c4a6e5fe6be6b97af3a9b891bc9eebf2-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8cc3eb717f3884f7a00bc6d93b04e973-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9e1d9ffc4c247b2bb4342e458387b481-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c0d6c24a636d6849bd12871437de14f7-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e708c701adddd5fcb0385cf6acaea57c-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"072bc0f89f39807f4afcdf324fcf4b37-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3305c4b4355ae50f0c55eacb257c1e41-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"dc406e1fa9a4900587230cbec61cfa43-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e62c7497e49e422ddb625daea6f214d5-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"755d52e21bcb49d0b5c854275f32ffe7-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7d36963cf78c2837046a3ae3d12b2aad-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81912614ff842321c98f3702c4bbffa6-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3291f08abbdb346c42ca6530d4a7255a-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3c8d51b69a01d320deda8d3a5eb49ce9-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"90d8fcd4293881f976bb60e4de7b4472-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"80766fa0ccc066f2d18eec7b89d9ae98-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e1741ac8bcc5a8f5b17b1086b4a439cb-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d4ddf1d1b1f189390b4c64943fae661-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"743e56b6e3ed836b78218e7a13a34717-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"52a3e4f2749a3b0538081f40b28eaa2a-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a29635c29dbb571b813c41dc8b7ba0bb-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7dff9aa562bf22c7c62fba6539d673d2-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e33eed0b14062992cedbe7a624f10301-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7d6fae84c36e604d8131aeb768bf1b87-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a849a17fbdf7139b89e5d928d7b1fce6-173fedd9000","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"799056242ef6d4822523bc6bfa62f682-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"92cc6478c0dbcf6a5289a80ae5958ece-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ceb41534df0afd897a53c8d5aeca58d6-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b296e03e2dccc33ae4976c9f27b89857-173fedd9000","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"beb18122021a083c75556891279e8f70-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c75d9f6f328c441d1de657653fd5181d-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f6edbd851116753ad72e2b9a3993bf5a-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Blue jay"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b29e39159e737743ee936b51d05e75ca-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5659505e508ae42bc0cc7cd8d142ad7b-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0bf008e7d532ebe7455360188fb64dc7-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3203dffdb89ddff2c27902a867f95e0a-173fedd9000","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e5451767ef6f6806dc05a566802fe906-173fedd9000","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c7467baf2d9f71720c5e2feffa91bfc-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ea382499f4552fba68eeb6c838926822-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f1589049fa2c7bb81631737442da2794-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3d96be54d0cb253fb24fbbc18d7764b3-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b6c603d31e3c5ad6526cbd081eab1c10-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"de29791f0380207c3518aac867974a8c-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"92ffa91036a54c710b83dfd28086b318-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"99fda5745c2e36dfd23fdc7de37d458c-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d5b68b26c968cf1a10d4940a0194940d-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c57f69fbad080df7ff81ec0fbf41c5cd-173fedd9000","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa4283ffb1575e891b37f4aa2dea43d3-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ff90139099853ada62129768539a6d5d-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"82ecc8943f6093e6bf82cc9627f41d76-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9a591f19a631a8cfac1b707ea4f761a8-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d05e2c3e193e76d17ced6e407da10d2b-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"91e59c4592c443cf5d9f7a51e6bde8c9-173fedd9000","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a587ba21ed0913f94f43b63fcfe0df7-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"428ba866eac42b1fe0aeedfe1077a877-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"bb32e5d8b333a6943d6a4cec8c3101de-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8a576a78b827cc2af797f23dd08b8923-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8607e13cc2a6125124d1c89c267bb38b-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"76bcf1b89f80bb629dacbd68ed42c5bd-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"29ddf85538e817259553cbe5a6bb41e6-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2f3263eff7ebec71575d55701cf91f87-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Amphibian"}},"property":{"maxSeverity":"High","incidentStatus":"Active"}},{"incidentId":"8d134e1371ab5e3c92ae66f54795a0f6-173f9b73400","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1e1006ac3851061bec92116289b0608c-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a79eb0471dab655862a6570f9642081-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6455a499b1b00a0389ee27491e92d535-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cecc0a8f12ab522e9b7b0c283df72b54-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c4da5594bf24ea55abd22b0f7fd48f96-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c85874f88ce0d6636595ef2eef588f48-173f9b73400","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d219b1779ddaa3b962d8978d75d39b46-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c0c51e491014a195220888938b315d2-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c87c20ce60127f65a5b5370fbe17dda9-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00b89c31c14766a9cff07ec7c4793042-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"813c0673a0ecc31b731a8f4a25cdedc0-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"21f94029b6b05f37c46e06592244a983-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Cardinal"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5babfaddd5f24bde9e0cc83344d857c0-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f1eafda089ba4d5f3fb7584e69955449-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Beaked + whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"647e0ce96cebdeb7234156bf4daa10a2-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"American + robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a3bb050b8e8d029c17fc3aa719846fc7-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Arrow + crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0cc8d82361998d912a49eeaa5a568200-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2ba2ff597c78d3a417fd9d6750caf884-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfe4e3e59319c55d39e42f454e70a3e0-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9686e3cc99ce6efbb9bb57556144dd25-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a38a9fdbe5f8326555e64ae57b93d59e-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a0db70328693dee28cb73c660a563de0-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7417b570f4b6b8c6bf0e76f07abff4c7-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e9a181d50e5fad2bc5a2cc93d5c5be1e-173f9b73400","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"629c77943696242a4e5f75f13c9c6e95-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"76cfdfd13767fd6041d5a3fd54900e99-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cc40511a7cb745ff811151ca54ad5ba8-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e493f687b7113e26a585b0fb28afa7cb-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bali + cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c6c9c8af5c0626bd032915765c47c3c6-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"22dd737ffc91834762d2dc7efb3c09d9-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a5841ab4327457478ae32b8782821415-173f9b73400","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c688a00870964f137dc18dfc6ac17421-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fabdce0aceb3785ebe22180c8f70bd62-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"932cde3967db70711ed9761d636e70fa-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81e3bf1c8520eebf1245c1b7426a6512-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Aspen","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa02a59a9da76f3681e37b9cf1ba3bc1-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Amphibian"}},"property":{"maxSeverity":"High","incidentStatus":"Active"}},{"incidentId":"3f6d7915d639fb8d8a4bbdff0c5d286c-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Alpaca"}},"property":{"maxSeverity":"High","incidentStatus":"Active"}},{"incidentId":"affc84d4bba9a65e580a3cf6755d8ef3-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Alpaca"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"48b5553b21d63aaf2eda299da258e7a9-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"2e14a130f967b3764d434f470ed90c79-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bat"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"d8ec38c82904fc0ffdc8221cea9b48f7-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ape"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"b5b9ede5671b61b19574d08cde731de5-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Ape"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"d39ba889ac01ecfb6074040a1556b09c-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"62476afd9bf098101eef349ea6bf11b7-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Albatross"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"a3dc1f92897a2b637fa8144fb1aefc2a-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African elephant"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"e7a36ca6dca27257e34b70ab9e7dccbe-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"8178e2274e83d047e2962cc9021740dd-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Amphibian"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"cea2781e2ebb17c20b3614bc901e7234-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5800a7718cdd105d3df4b169401db1f7-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7e9be554e1d5416a349427640baa9ea5-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c438f048b30b98bdba8874dea91f8a75-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"473422654c9a13a80a5d3e4f3fce6225-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5d60b2652cde380df98c122774c3bfe8-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"87be661e174b9e13d0527649a74786aa-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f663bb47feec7311609484568b329a05-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b744b8f0c891cd73fefa8c209039a581-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a37d0c3ae699587692341d47831cae5d-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a9c221fa13ed1a7b8ddd9457e1601f55-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"301bb7eea70421287f206c5ec9143606-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6e7f3460dc2329d609723f268971ea4f-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7a2acec2d56f800b54e4bfb637979573-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7da4cf1671df0f941ec3ddda54561839-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4c917f96e757797ea674ab6bcb245a6a-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"02425c6260bca870b822b1091e1b030a-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5e693c0f522a11fb7938803e3386d43e-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e9a771c92b1b8a40d70cbfc89edd03f2-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b27e25e90f10a2679a8dc87ca7bd6be0-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0b46a044b6d592a45e2508d584bf16a3-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fbfe65cede0024601eec4a697ed957ab-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6afd6f5ee7a97a49220bfb014c64e417-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"91dd29f914d9ec8f118ff45ae4a45288-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8574a6fb0f5124381263704c82ab735f-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3de1bb2f38294107eea364fdf7e9c5ff-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8d26b9c774a930cb5dcaa13a1c0a3ea0-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e63da4b3b9f085dd48a72ed9a34a09aa-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"86e85ca32b3ff7270a89c46b5323c208-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4b239d1ffefa67f23071fbc39dce63fa-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e765a24fd08a5208c8307c292241552b-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1b258da33470143846c3906ca2a632b7-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Animals + by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a3ffa3ce6f9e628d20cae4e3ad4c1b14-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0e6f3b78509ee82efaa76412fc5e9fb4-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0c12694a318199d668bb60432b719700-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4ab7b756894564b9e845cf9a91ec962d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3e3789ef957f68182ecd6f42079affc9-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Animals + by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"407aaccc44d2dd79d227f1f47956eb0f-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a1221b473717e2beda023ddcb3591027-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"25981c93bab7e74cb3b6af65075a18c3-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed1945350561ce57fd45860c49e7605d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4236b68470d3b8c3d7fb9d4aa83e442a-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a57a441ee18b1a781e2344706190b8d8-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"983d100f8e319cfedfe16bfeaf0f150d-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c3ecb659683973a2c76a8bf2a7aabeb0-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3e46d7410825743014703be78cc525d6-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bali + cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ad58803b70615cc0ea4d016c6540f10b-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ac7f0f60305bde2826653406c7bc296d-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7ee8cc5814bc8339f3049b2913f2794c-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8a0fdc0de122c7daef5c37dc1447d2c8-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"825280c8d4608c90c4ea2e3c9ff5846d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Beech","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f0ec54044b14f05722c1dd6e9e2ee770-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c3ea31010e92e5d097ace4053ff7a939-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c6c1f9e9751660df89ce86577656ae12-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Black + panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1574e9f113073062bc93476ee179a2d2-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e7eccc088918e7286e480de1c2b15b19-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"78eaf876411af828c8a66e9147ad2af7-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"862f06854cdcb11770692bfde132d4b0-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6cf9524292757836c2eec2e14fdab244-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eaf74390f3baf2f348e9d782d171c461-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d10ac3ca65b163123b615cf49c7b69d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"01bce2b7bc20fa236c87a57421728075-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"65b5141d6bf9d7da267fc9b53439919e-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"06a240ec63ff8eb1f19b47a5168db921-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0f604552873bb3e03f836e8c5da15c29-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"093093136ae4ee51248525a86c9162a8-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2f2e19710ef2d44fc1cd59ff9796c753-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1b6c0e7d681c2d0feb3044d05ed7eb26-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6c6621bfa41faa7d2b370752dbb4c3b3-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a6a239ae68312b70cf66f778a7477d41-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81d072a81762c6085de6fa8178a8faf8-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"20a5e8ace6f8f6cdd30a05f3aec3eba6-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2515b0255f013bb2cf92016c43b1a9d8-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8b607981c1a42ad6fef70ac9e15d4cff-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"563b06ee98279cfc71de4ad035e7fcfd-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d5fe255778a3022c66f4ed65ae45446d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2cba0250b334090391b23a888cf67792-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ffbc33d6cabb0f1f0506580c147d0c47-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"73561fa50ad6459fe0b8f9bf74e30a81-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"84c4b83f374581f9ea685be4a063abd5-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1e18994824d880a47de4f87cde3018c4-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4a6b2318eba8e4259bec52a48fbc77bd-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0998c5438e745065f2b4312721c48b8f-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4157b275ca73cbd0226552eb73e2a963-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0237fe843f8d155aa0cfb6d58ee00be7-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2b8eee6a985e6cfe252b6f55c8f8c693-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d8ca9275fac073d5f48d2789fae060-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bovid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"127c8ee94bac1880ef881d5d506b4982-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"bf16edfb65f4cc59775876306dfde327-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"90d8fcd4293881f976bb60e4de7b4472-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0858072e1e89be918ad8c1b38e5156d9-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bali + cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3e04f3cfaeff3247b8d216982f98c96f-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"94b1070d82d2a24f68ee459fb4dd031f-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"10a2fd212719f21a164a01d266c02b9e-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8ec165a0e9bf58e16ff062813d87df1d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"78f30c2c9022b041c64d3ff2a032cd43-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81bc0798412f4dddab87bc1f842bdbbc-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5fcb11c1b7a95a93165e51820ede686f-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8fbefa2c60f8c1bff6452cb2d240d94e-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"72fef2ce451a9570e89fa0ee33a2ea5f-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7634063ba3975e6c492fa8ed3c48b1ca-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"988cfe0b1258c43dcb3d2ed56aa0929e-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2ad1029a1a921807138b4a9de87e0b29-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Ass + (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d05e2c3e193e76d17ced6e407da10d2b-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"53cf37cb06cd78db81810decfb9bcd07-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"86a24d29f4b0bb3def4022d90c456f0e-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"77a5c068834bf068189b0df48219028d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4fb5824a952aca734162b76ad8d75e07-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"372fc72ff4b4148d138cc827aae8f172-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"da6bdb54a97d59967cdb86a188a80578-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"faa41dfc3e63a426b13809cb6ae05f5d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eeb9c14d94d7561a1757cafb5857786e-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"315b680fa4dc2372fa859d0dd1103162-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3e2a8e746d5bf3949a7e7c04f5db10a2-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9664d1509d5c9c6cdab967a48ed43a7c-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f471a0ebff9f1b4c3a71b03faced6ec4-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2a21a1f0f4ec1006cc974a4f0ec21d50-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"97796fa71d33ea33129206a475cc5d5c-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3ac2f16d58ce1784eac5256e29bf2f0d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"72efcbe8df4b3454f83a1229a1e12428-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"74235ca567265b33c4888c252a829756-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ec190978fe5340f3a4a3ccc36667db92-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9ac4c95d5be44546d4e950980c4fb805-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"07b3f78d099b7d35b4d5d59e1a21d1e1-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8a576a78b827cc2af797f23dd08b8923-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"df208b3f67f60ba6d0f5b0f803f4bb1f-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"52f41fd7eb1c79080f7e1ea88de20f0e-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ad65c892c9b628dbb524a2dbf1edc502-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6c9fc8a6a683f95c87e4e5c56f6d63c1-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"80a1891b3f02d7c73625ff0c7fe62f06-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f7409a9cf8e364d46c3e08a7f9eaff60-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"28421b69c26bd4e004d2c9d26c7020ea-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Badger"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"4e3334fb5401357d5c07008517224a8e-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Basilisk"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"35335fb05115324e42868c51bd29f060-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0e2f472c7dbd692fba8923c2f7f09c90-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"623f8a4e5db7f6dceddc5eee5e0580f5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2f7a6d9edce151ce2fc44a304917c1e4-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"32ebefd2c1b449dc029c80729b51e5e5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5a51fda385a078b13f873cf1215c87d5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"10b650ca149ca53aa787cd482718838e-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"32dbb19962929a94db7a860d500d685e-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"658146886f9eea1541904e20c652c836-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"22959a995b07fffa7418fa717520b3f2-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"African + buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3bd3098f59ee7844fbca7b1f08d43f52-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2e1eb185f5343ffdf708d8541785b37f-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"49db17e1cc7e839a3fcd995b8ee992e5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3ac5de822c4163e11dbc5a10bf64011d-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3eebf692817806b3f5540b2c244ac8a2-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"280ff58f97a81a6e025413c3ef54432f-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"09a1ad568b24b07a09a5aafb3b3b8eb5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"60a4bfeb9f18e9393640444cdfecb276-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"479cbdd49f9e5a1466b63bc62aad04f3-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"58fc30bc6a168cfa0d486a6af77e0802-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"09435cd640b7340a5a0843828c218e82-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0f1cc676aadd0cc1b50a02b4dca56846-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"48358c737de3c7fa192e4468f42d4eb3-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"60c7bd3490b72a501f96ffc3550ced3b-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bald + eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1220bb055cee1ae86c5b230bcdaafd27-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a21f7096fe2d575c3017b264f2acd60-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00fbb269f85059a69dd16a051510dd74-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Ass + (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"047a2c5a7bedaffb7cafd3b9fdb287c6-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4cbdd3c280c5e1c03a1b75d80a5c254f-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"383e61380621f6a6288fb27ffc359df8-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"02fd8a6b5271910b2335f84e6c309bcb-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"16504d092eec0dc756e9568e45536d5f-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5988cf3bfe979264d391d184fdd04c04-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4ac8f18ce9fbbd758fc3b1acbc145dd4-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Beaked + whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5855dadac7d09ffb6ccec6f96dbfe621-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2c895672c3c033c57d0f26f5273c7ea3-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"130cf6af80e05faed85e0710e72adfa4-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"614de91a9df5b704fb46b2f756678398-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2bd925c013407b08e4ac97e6a392a59f-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"010e484142c72bf862168db80cda5ec9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"19a8b22a0e708d7fac140174b5a76ba8-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"497d898821166983b0566e842ffb99ed-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"589e1ce7435e10c4fd25dcf44e6008cb-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5659505e508ae42bc0cc7cd8d142ad7b-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4c795cbc9707d8bd5f5aab742fd1c5dc-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0199a7484859345433ce3f09ea1e16e9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1964ee989d55fcba205d68d9214ddcd4-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"32a5ec4fbec26a387421648d3b3cfd64-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1b7dac0b25b4b609de56f35beed9237d-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5dab47a777cb20243f5c711c011bc625-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"African + leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5f91b848647fdad9fc89cf702c76f361-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2e937f11d264be5c73119b80a27d42cf-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"599127444e3890439efb9990e31c287b-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"30cd5834fdd569759064939a3995f8db-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3ef422945d263e10bda68f7e4410c4b7-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"34104bb5a81001d1f3057e2555e4134e-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3717bb14413ea653478556ec30adb409-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5f4e45c429c9174f9acf08df4af5e317-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"46b06ed6d6ccccfaeb938344dbe828c3-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6509b04581eaa307e69f9a01a4023998-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"544960f53a0e9840a5ec268bb6ddd5c7-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"629c77943696242a4e5f75f13c9c6e95-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1bb9530e7d6e50a21229bbf8ec399b6d-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"63630c3417929aa30984db5598805523-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"22dd737ffc91834762d2dc7efb3c09d9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00021aab166f3cbdf0fa06c2698fb988-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0f828a31e8b181794221615367e72527-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Arctic + Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"43b41958443f7feb303aab3ccce585dd-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0cf6d7792cd7c9e90432cf3d7df1d55d-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/incidents/query?$top=1000&$token=eyJtZXRyaWNJZCI6IjNkNDhlZDNlLTZlNmUtNDM5MS1iNzhmLWIwMGRmZWUxZTZmNSIsImRldGVjdENvbmZpZ0lkIjoiYzBmMjUzOWYtYjgwNC00YWI5LWE3MGYtMGRhMGM4OWM3NmQ4Iiwic3RhcnRUaW1lIjoiMjAyMC0wMS0wMVQwMDowMDowMFoiLCJlbmRUaW1lIjoiMjAyMC0wOS0wOVQwMDowMDowMFoiLCJuZXh0IjoiTWpBeU1DMHdPQzB4TmxRd01Eb3dNRG93TUZvakl5TTJOVGd4TkRZNE9EWm1PV1ZsWVRFMU5ERTVNRFJsTWpCak5qVXlZemd6Tmc9PSIsImxpbWl0IjoxMDAwLCJmaWx0ZXIiOnt9fQ=="}' + headers: + apim-request-id: 57d1a939-6f64-43c4-96b6-ad356458342f + content-length: '259499' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 16:55:07 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '1088' + x-request-id: 57d1a939-6f64-43c4-96b6-ad356458342f + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c0f2539f-b804-4ab9-a70f-0da0c89c76d8/incidents/query +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/incidents/query?$top=1000&$token=eyJtZXRyaWNJZCI6IjNkNDhlZDNlLTZlNmUtNDM5MS1iNzhmLWIwMGRmZWUxZTZmNSIsImRldGVjdENvbmZpZ0lkIjoiYzBmMjUzOWYtYjgwNC00YWI5LWE3MGYtMGRhMGM4OWM3NmQ4Iiwic3RhcnRUaW1lIjoiMjAyMC0wMS0wMVQwMDowMDowMFoiLCJlbmRUaW1lIjoiMjAyMC0wOS0wOVQwMDowMDowMFoiLCJuZXh0IjoiTWpBeU1DMHdPQzB4TmxRd01Eb3dNRG93TUZvakl5TTJOVGd4TkRZNE9EWm1PV1ZsWVRFMU5ERTVNRFJsTWpCak5qVXlZemd6Tmc9PSIsImxpbWl0IjoxMDAwLCJmaWx0ZXIiOnt9fQ== + response: + body: + string: '{"value":[{"incidentId":"9d5c4be357ab910ff92b0a810e36b3c1-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"African + leopard"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"79fa6b2d43fcebaceeb9779633d98f1e-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"9579e9cba3b4f02a95bc66bf22bb0b17-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Fox"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"b2ed5f827e7ab8113a530113d32fe3a4-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"6ca158bf56fce054e59769e02ce60ce5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Basilisk"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"ec8664153851031cc428baa917138df7-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Badger"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"e023f8f2829676c9e08418b7d2c73552-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"674090886eb148a34d6c719e5ef3dd10-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"756442a2fc87d2079a5b3f0e57c66033-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3bd3098f59ee7844fbca7b1f08d43f52-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3eebf692817806b3f5540b2c244ac8a2-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"28421b69c26bd4e004d2c9d26c7020ea-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"047a2c5a7bedaffb7cafd3b9fdb287c6-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"02fd8a6b5271910b2335f84e6c309bcb-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"614de91a9df5b704fb46b2f756678398-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2bd925c013407b08e4ac97e6a392a59f-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0f828a31e8b181794221615367e72527-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Arctic + Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"32a5ec4fbec26a387421648d3b3cfd64-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"aac0012066d2bde3b2467c6c3a4c2bda-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ea7c3c0de32117582a2a53bc1afc7422-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"acf8246b316abc7f599cd60ec084bfce-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e1b8ee9e3b639ef98342c1c2f6704542-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7a8e6dece2a0d506c80027a3438b03f8-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"bb023bac599b4e83135e2256a71fb815-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ab46dccca644854614af014e7b2dccbe-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d11b57f73e4f4518817aacd4e7b7c395-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8be5c1fbfe2006d5c2286b31ca0b1df0-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a322d49d5d58ed2ac5437773c6236a24-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c8a4d47ab45d8adcbfaba85bc7825026-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6660c5420193a4240fa57e5b846d374d-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8de44e7bddd81415d2b304312ac3ecd7-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"970ce26ee86ee0cd5f213562c5a28272-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f265881f5532c5ab727abb669279de14-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"daacc3c319c8a76983cc600dea26a393-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"99dc13312f1d65283e1067d91de2621e-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b2940f68e5ae134b7932c6d227dbbaa2-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed31c4235f913b7b45987184c07379b2-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6fecf64cf0df96931370c46e140aaf92-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"caabe3886eae90bf1d09549efdffc8f3-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6930cee5d8efb94c8329f9b80ff43859-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"85936fe51247075a7e655820014c2896-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"69df271d4cf73e88c816dd6e22a1f9c6-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ee633dfcfcc9ac228b4e5ac1de8b1e12-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e701b444044c59de6d66dcf54fd28d22-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"American + robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d7a12d51bf04841e0dd376f7408f5049-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"93c97c1fe02a4c2086bf96b80ab67e50-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b4dfe5a9883124fb273757d246542349-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d8675dc8718406081efbd5ec4cbcd855-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arabian + leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6c75474e02e49a5d7d8d3bf940603dba-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6b19ec4f1ef5e97d1fd2eac0994f1abe-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d416005134c8d5d5cc9295166c44be5c-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b44d1721da29838169e8c09ba7bded1e-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9da4d51708e88047136b701d127538bb-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e239a8d84abf4bbda4f827f043d689e2-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"750d3148d3ec276e09e160ca5f3bcb30-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7bab457d4d7ee6055b24313a41143193-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f1771ac778019c150cb774344250fca3-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cbecd859eebd4c1fd0284c63e70e0979-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"69ba26def626ca7d201928c3bb7ba9a5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"faa12efccfc87ba03d8d757bc2f0b0c4-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9873d1af0ce8b6d687ee40cb84d52af4-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7d36963cf78c2837046a3ae3d12b2aad-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fd11d8b8a7b0bf407fde126c79da7c3b-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f4682287e688d43ab4307ab7d5b37738-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"beb18122021a083c75556891279e8f70-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d197a7ce67ded42a1c3676a2a04137-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f55e141d7f77eefc2395e268af311afb-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f11914e0219cf41f777de203faff2063-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d56df63ed4f3851ad3b285815e29fac-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ac0a0938a8a3ff6c0a35add8b693ccca-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b83d89638052b6e1c2decbd750525ef9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8b5cae1cfda637d2a94b9a933f410b26-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7006b9e38424d58f89a05b919013424f-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ec694c925571ab2b4c3ce88422cb3665-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d5b68b26c968cf1a10d4940a0194940d-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d2a5002cd00ebec39e06ad75d7f3f8b9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfd0f6969d39b8687f10f25da91e4ba3-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5dab47a777cb20243f5c711c011bc625-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"African + leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4c795cbc9707d8bd5f5aab742fd1c5dc-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d0bd1cbd6cae2dcac548465f64921420-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b4cdf624930e65e6f94c2e0428cb0f8b-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"86b0965be0f4391fead2c362e4600a2f-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e12f39f56c01be31b42e1514c652b877-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81912614ff842321c98f3702c4bbffa6-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"91e59c4592c443cf5d9f7a51e6bde8c9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9686e3cc99ce6efbb9bb57556144dd25-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d60e1715357ea6ad59d851c0c80c3fc9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a3cc2ceb63a8d692b97b3c9048a7b39f-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8d59178c8752127ddacd4ab6f13564d6-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"baf21d62280034d070c4b9fd596225c6-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"72cc29476cc98841fcb05fe69e74d967-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a32aaee7e0bf17acb4afe1482209eb5b-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"841f42bf736cfe648329150663edc81b-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"dd1478bd9f815bba0c2c7730a6da5a1c-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa281ae71357208f14ccb83392ed5d4c-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e88ad7e1936c819c411ebf14386ac9c5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b051b82f932c4273ed698738b2df6cac-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b59811d40e7801d440a442eabe0402e9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b7dcdcef99b523f2ae9eb58b44bc9d59-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a0db70328693dee28cb73c660a563de0-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c98d4083edba5a3854a69a40f2179b9a-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d5e408bd19414b611022252cff4e5f8a-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7e2856d696bc35f4c1fc02725ea05cab-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"91690e5d2342b154687d34b4320f9b0a-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Black + panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d4e1c1bd0063ac97a4b993f8a888eed2-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c6c9c8af5c0626bd032915765c47c3c6-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfb5fef5de71fc5669189ec18e80c633-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d4df57248c9c1ee210cd2e7367b9a675-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1a3a1317fdc0c9a3954d775d4b7d5da1-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2d20cd927b7a8a6ce82d3a4da4c10c28-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"618fade71fbd5fbea19488d3a4a62d18-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"59671e17866bc003f281055d01d7f857-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3ae1927be5c685a76fd9784744c082bf-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"11dceb6e56c7639fb5da33e8aa2d34a6-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"28b93e5bb5ed5b9fe7e802650b689444-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c9613108a6390f7987ce02a5eb5eeeaf-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"306e4492ab8f87c0cbd03e1ede184e57-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7837af6071bd64fa9ace39b494937ca8-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0b8a3b066088da639be5b85a2a9f20b5-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f7a6e4d4b0bb3715751301f1b5c3a406-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f6edbd851116753ad72e2b9a3993bf5a-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Blue jay"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a4cb5f253e30bec6393052987af01168-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9a591f19a631a8cfac1b707ea4f761a8-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6b5c2510e20a73926cb189d84c549d1c-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d206065246c00ab74315b4298da76e1d-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"76bcf1b89f80bb629dacbd68ed42c5bd-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0da4f4ef4db7db9ba355c66e911e2b35-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"821d9ae36b6637a8c39793d0a5c17cf7-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b93f657e9633927a1155cbc6ed4bf5d5-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0b03e5ac6ea74eab1d2643a0f6d5838a-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Arctic + Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"85d6b2dccc1d18213b3934c0c009550b-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e525a81b583ed149e12ed726f74b0f74-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"16b310c0cbde77dbf499341e070d6f20-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5c64a49e41184760a3a42f6315469ac1-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a027c67fe5bfe533336358bd3d85d94f-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a7886c30eaa9c16151eb1e3927c9853a-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"267f0c5ad4c1b049d6fd59a784d6c01d-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"428ba866eac42b1fe0aeedfe1077a877-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"76cfdfd13767fd6041d5a3fd54900e99-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b6e2f812603af7d529884da490407381-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c4e7b3b4aa13b0e3f70ce3b98b8a1644-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"736d99fc5d108003d75bba057875dbd1-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c7467baf2d9f71720c5e2feffa91bfc-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5babfaddd5f24bde9e0cc83344d857c0-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9ebaf278493cd8716b31d2f9a7f5a1d5-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81e3bf1c8520eebf1245c1b7426a6512-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Aspen","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}}],"@nextLink":null}' + headers: + apim-request-id: 2e41c344-e676-4088-8fed-213bb405ca2f + content-length: '37890' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 16:55:10 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '1418' + x-request-id: 2e41c344-e676-4088-8fed-213bb405ca2f + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c0f2539f-b804-4ab9-a70f-0da0c89c76d8/incidents/query?$top=1000&$token=eyJtZXRyaWNJZCI6IjNkNDhlZDNlLTZlNmUtNDM5MS1iNzhmLWIwMGRmZWUxZTZmNSIsImRldGVjdENvbmZpZ0lkIjoiYzBmMjUzOWYtYjgwNC00YWI5LWE3MGYtMGRhMGM4OWM3NmQ4Iiwic3RhcnRUaW1lIjoiMjAyMC0wMS0wMVQwMDowMDowMFoiLCJlbmRUaW1lIjoiMjAyMC0wOS0wOVQwMDowMDowMFoiLCJuZXh0IjoiTWpBeU1DMHdPQzB4TmxRd01Eb3dNRG93TUZvakl5TTJOVGd4TkRZNE9EWm1PV1ZsWVRFMU5ERTVNRFJsTWpCak5qVXlZemd6Tmc9PSIsImxpbWl0IjoxMDAwLCJmaWx0ZXIiOnt9fQ== +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_metric_dimension_values.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_metric_dimension_values.yaml new file mode 100644 index 000000000000..b38d5990d476 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_metric_dimension_values.yaml @@ -0,0 +1,65 @@ +interactions: +- request: + body: '{"dimensionName": "dimension_name"}' + headers: + Accept: + - application/json + Content-Length: + - '25' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/dimension/query + response: + body: + string: '{"value":["Algerian Fir","Almond","Aspen","Austrian Pine","Bastard + Service Tree","Birch","Black Birch (River Birch)","Black Mulberry","Black + Poplar","Blackthorn","Blue Atlas Cedar","Box elder","Cabbage Palm","Caucasian + Fir","Caucasian Lime","Cherry","Cherry Laurel","Chinese red-barked birch","Cider + gum","Cockspur Thorn"],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/dimension/query?$top=20&$skip=20"}' + headers: + apim-request-id: 51ac5ec6-87b5-4460-a98e-8545f367890c + content-length: '497' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 16:55:11 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '180' + x-request-id: 51ac5ec6-87b5-4460-a98e-8545f367890c + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/dimension/query +- request: + body: '{"dimensionName": "dimension_name"}' + headers: + Accept: + - application/json + Content-Length: + - '25' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/dimension/query?$top=20&$skip=20 + response: + body: + string: '{"value":["Common Alder","Common Ash","Common Beech","Common Hazel","Common + Juniper","Common Lime","Common Walnut","Common Yew","Copper Beech","Cotoneaster"],"@nextLink":null}' + headers: + apim-request-id: 36b40492-9374-4411-ab28-6f2024278fae + content-length: '175' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 16:55:12 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '255' + x-request-id: 36b40492-9374-4411-ab28-6f2024278fae + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/dimension/query?$top=20&$skip=20 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_metric_enriched_series_data.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_metric_enriched_series_data.yaml new file mode 100644 index 000000000000..65ca8471064e --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_metric_enriched_series_data.yaml @@ -0,0 +1,32 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z", + "series": [{"dimension": {"city": "city"}}]}' + headers: + Accept: + - application/json + Content-Length: + - '125' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/series/query + response: + body: + string: '{"value":[{"series":{"dimension":{"city":"city"}},"timestampList":[],"valueList":[],"isAnomalyList":[],"periodList":[],"expectedValueList":[],"lowerBoundaryList":[],"upperBoundaryList":[]}]}' + headers: + apim-request-id: e38d671d-e46f-45cd-a755-02054d4bab34 + content-length: '190' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 16:55:13 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '379' + x-request-id: e38d671d-e46f-45cd-a755-02054d4bab34 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c0f2539f-b804-4ab9-a70f-0da0c89c76d8/series/query +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_metric_enrichment_status.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_metric_enrichment_status.yaml new file mode 100644 index 000000000000..77f57c250f5b --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_metric_enrichment_status.yaml @@ -0,0 +1,31 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/status/enrichment/anomalyDetection/query + response: + body: + string: '{"nextLink":null,"value":[{"timestamp":"2020-09-06T00:00:00Z","status":"Succeeded","message":"{\"CreateTime\":\"2020-09-12T01:29:10.153Z\"}"},{"timestamp":"2020-09-07T00:00:00Z","status":"Succeeded","message":"{\"CreateTime\":\"2020-09-12T01:33:40.164Z\"}"},{"timestamp":"2020-09-08T00:00:00Z","status":"Succeeded","message":"{\"CreateTime\":\"2020-09-14T20:53:05.120Z\"}"}]}' + headers: + apim-request-id: 6455d05e-cc67-4437-bd25-56a629a456d8 + content-length: '375' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:59:24 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '217' + x-request-id: 6455d05e-cc67-4437-bd25-56a629a456d8 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/status/enrichment/anomalyDetection/query +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_metric_series_definitions.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_metric_series_definitions.yaml new file mode 100644 index 000000000000..dac5c8c5d658 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_metric_series_definitions.yaml @@ -0,0 +1,3027 @@ +interactions: +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Antelope"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=20"}' + headers: + apim-request-id: 5a2cd9d8-4a39-43ff-ba49-a5507c4dc029 + content-length: '2320' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:18 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '132' + x-request-id: 5a2cd9d8-4a39-43ff-ba49-a5507c4dc029 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=20 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Antelope"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=40"}' + headers: + apim-request-id: 6045dd0d-f055-40e7-84e8-85c58049b5a2 + content-length: '2308' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:19 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '149' + x-request-id: 6045dd0d-f055-40e7-84e8-85c58049b5a2 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=20 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=40 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"African + buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bedbug"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=60"}' + headers: + apim-request-id: 6c10fb67-71c5-43d2-9b71-7ed6b87094bb + content-length: '2314' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:25 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '5166' + x-request-id: 6c10fb67-71c5-43d2-9b71-7ed6b87094bb + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=40 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=60 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bear"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=80"}' + headers: + apim-request-id: c8b7c49b-bd78-474f-aac1-42432d626d3c + content-length: '2312' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:25 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '83' + x-request-id: c8b7c49b-bd78-474f-aac1-42432d626d3c + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=60 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=80 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"African + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue Atlas + Cedar","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Aardwolf"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=100"}' + headers: + apim-request-id: 89ecfd57-732f-42c5-ac30-51b33bf5a430 + content-length: '2342' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:25 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '80' + x-request-id: 89ecfd57-732f-42c5-ac30-51b33bf5a430 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=80 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=100 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Animals + by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"African leopard"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=120"}' + headers: + apim-request-id: 7ba6d9e4-8230-4c82-ab6d-0e550f48c2d7 + content-length: '2400' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:25 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '78' + x-request-id: 7ba6d9e4-8230-4c82-ab6d-0e550f48c2d7 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=100 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=120 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Animals + by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by number of neurons"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=140"}' + headers: + apim-request-id: 1d1f83c0-66d6-451b-9612-41636a087b16 + content-length: '2342' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:26 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '76' + x-request-id: 1d1f83c0-66d6-451b-9612-41636a087b16 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=120 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=140 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bald + eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bat"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=160"}' + headers: + apim-request-id: efcec037-1b09-41a4-a3bd-94fed370b0a7 + content-length: '2339' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:26 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '89' + x-request-id: efcec037-1b09-41a4-a3bd-94fed370b0a7 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=140 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=160 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"African + elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue Atlas + Cedar","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Asp"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=180"}' + headers: + apim-request-id: 3b0eff0e-e7b0-4050-9b1f-710721bab24c + content-length: '2356' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:26 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '81' + x-request-id: 3b0eff0e-e7b0-4050-9b1f-710721bab24c + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=160 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=180 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bali + cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard Service + Tree","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Ass + (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"American + robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bali cattle"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=200"}' + headers: + apim-request-id: 4ba652dd-f708-4555-bd35-19b111a1e601 + content-length: '2360' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:26 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '80' + x-request-id: 4ba652dd-f708-4555-bd35-19b111a1e601 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=180 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=200 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bison"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=220"}' + headers: + apim-request-id: 5bde8e4c-d4e3-47fa-8ca6-82468f7558ea + content-length: '2330' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:27 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '83' + x-request-id: 5bde8e4c-d4e3-47fa-8ca6-82468f7558ea + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=200 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=220 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Albatross"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=240"}' + headers: + apim-request-id: de3154be-4813-4b42-b6a3-ea66694e94ab + content-length: '2305' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:27 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '78' + x-request-id: de3154be-4813-4b42-b6a3-ea66694e94ab + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=220 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=240 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Arabian + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Beetle"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=260"}' + headers: + apim-request-id: 2fd6fd9e-4ab1-4464-8e64-787a0e76e27a + content-length: '2409' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:27 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '74' + x-request-id: 2fd6fd9e-4ab1-4464-8e64-787a0e76e27a + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=240 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=260 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Black + panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Beech","Dim2":"American + buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"African + buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Armadillo"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=280"}' + headers: + apim-request-id: aa548970-2082-46c9-937c-e7712c1eae2f + content-length: '2332' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:27 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '80' + x-request-id: aa548970-2082-46c9-937c-e7712c1eae2f + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=260 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=280 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Beaked + whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard Service + Tree","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Armadillo"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=300"}' + headers: + apim-request-id: 98e61d1f-9cd3-4c80-b256-15146908b3d4 + content-length: '2410' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:28 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: 98e61d1f-9cd3-4c80-b256-15146908b3d4 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=280 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=300 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Basilisk"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=320"}' + headers: + apim-request-id: cafbe1e7-95e7-406a-adbd-f5a488517552 + content-length: '2391' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:28 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '81' + x-request-id: cafbe1e7-95e7-406a-adbd-f5a488517552 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=300 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=320 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bass"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=340"}' + headers: + apim-request-id: 21b12e6f-54b3-43b8-b24e-aa96104879fe + content-length: '2371' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:28 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '81' + x-request-id: 21b12e6f-54b3-43b8-b24e-aa96104879fe + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=320 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=340 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese red-barked + birch","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Barnacle"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=360"}' + headers: + apim-request-id: 7e05d204-012e-46e0-8c02-fb269eae2b6d + content-length: '2398' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:29 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '83' + x-request-id: 7e05d204-012e-46e0-8c02-fb269eae2b6d + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=340 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=360 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Aardwolf"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=380"}' + headers: + apim-request-id: 08798543-3845-4834-999b-0df5863f6e6e + content-length: '2366' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:29 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: 08798543-3845-4834-999b-0df5863f6e6e + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=360 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=380 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Angelfish"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=400"}' + headers: + apim-request-id: 4a4cf647-e6bf-409d-b7d6-54b7ba4e57cc + content-length: '2387' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:29 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '81' + x-request-id: 4a4cf647-e6bf-409d-b7d6-54b7ba4e57cc + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=380 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=400 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Animals + by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"African + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American robin"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=420"}' + headers: + apim-request-id: e6895142-aa83-4025-8f89-fcebc7ac5bb2 + content-length: '2403' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:29 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '89' + x-request-id: e6895142-aa83-4025-8f89-fcebc7ac5bb2 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=400 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=420 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Aardvark"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=440"}' + headers: + apim-request-id: 2326213a-01da-4d4f-ac11-8f152c3df3c2 + content-length: '2361' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:30 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: 2326213a-01da-4d4f-ac11-8f152c3df3c2 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=420 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=440 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bird"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=460"}' + headers: + apim-request-id: bfa69a4c-cc48-45de-9405-c77fad4ada7d + content-length: '2422' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:30 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: bfa69a4c-cc48-45de-9405-c77fad4ada7d + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=440 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=460 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bear"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=480"}' + headers: + apim-request-id: cd908ff6-69dc-4840-ad39-1795fbb1ad00 + content-length: '2403' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:30 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '75' + x-request-id: cd908ff6-69dc-4840-ad39-1795fbb1ad00 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=460 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=480 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"African + buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider gum","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Ass + (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Black panther"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=500"}' + headers: + apim-request-id: 67e1502f-e0a4-4883-9f5c-dc9a2a63cda4 + content-length: '2385' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:30 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '78' + x-request-id: 67e1502f-e0a4-4883-9f5c-dc9a2a63cda4 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=480 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=500 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Animals + by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"African + buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bird"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=520"}' + headers: + apim-request-id: effc0340-8266-4b5e-9fc5-3a4986e85548 + content-length: '2380' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:31 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '81' + x-request-id: effc0340-8266-4b5e-9fc5-3a4986e85548 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=500 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=520 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bedbug"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=540"}' + headers: + apim-request-id: 88ebed3d-f2b1-417e-aead-80b6d93e8cc2 + content-length: '2273' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:31 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '75' + x-request-id: 88ebed3d-f2b1-417e-aead-80b6d93e8cc2 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=520 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=540 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Ant"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=560"}' + headers: + apim-request-id: 54dd074d-da25-468f-b632-72804301473b + content-length: '2269' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:31 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '74' + x-request-id: 54dd074d-da25-468f-b632-72804301473b + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=540 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=560 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"African + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Anglerfish"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=580"}' + headers: + apim-request-id: f609bb00-fa62-4473-97ed-28a44d473db8 + content-length: '2335' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:31 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '78' + x-request-id: f609bb00-fa62-4473-97ed-28a44d473db8 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=560 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=580 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Animals + by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bald + eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Walnut","Dim2":"Animals + by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"African + leopard"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=600"}' + headers: + apim-request-id: 037201e7-7678-4397-b542-637f1c1c1a92 + content-length: '2334' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:32 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '76' + x-request-id: 037201e7-7678-4397-b542-637f1c1c1a92 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=580 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=600 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Animals + by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anteater"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=620"}' + headers: + apim-request-id: d9d2f343-acb5-4e94-a5c6-7b2df7f5df9c + content-length: '2360' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:32 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '76' + x-request-id: d9d2f343-acb5-4e94-a5c6-7b2df7f5df9c + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=600 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=620 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bald + eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Alder","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Alder","Dim2":"American + buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Boa"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Albatross"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=640"}' + headers: + apim-request-id: e69a93f2-345d-495b-9fe8-ca1718c6a0d5 + content-length: '2310' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:32 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: e69a93f2-345d-495b-9fe8-ca1718c6a0d5 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=620 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=640 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bobolink"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Blue bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Blue jay"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Butterfly"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bandicoot"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=660"}' + headers: + apim-request-id: cd06ae33-1a79-4fd7-8bd3-64108dce02eb + content-length: '2325' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:33 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '91' + x-request-id: cd06ae33-1a79-4fd7-8bd3-64108dce02eb + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=640 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=660 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bald + eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Birch + (River Birch)","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"American + buffalo (bison)"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=680"}' + headers: + apim-request-id: f496cf4b-64ed-4415-a26d-442db7f9f0e9 + content-length: '2338' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:33 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '77' + x-request-id: f496cf4b-64ed-4415-a26d-442db7f9f0e9 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=660 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=680 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"American + robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Birch + (River Birch)","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Ass + (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Blackbird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Buzzard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Armadillo"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=700"}' + headers: + apim-request-id: bd30f432-fc32-40ba-b5a6-ab9ee0676271 + content-length: '2271' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:33 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: bd30f432-fc32-40ba-b5a6-ab9ee0676271 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=680 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=700 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"African + elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Arabian + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Hazel","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Alpaca"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=720"}' + headers: + apim-request-id: fe318aab-d830-48b7-b3aa-4670776f6eb8 + content-length: '2353' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:34 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '81' + x-request-id: fe318aab-d830-48b7-b3aa-4670776f6eb8 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=700 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=720 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Ash","Dim2":"Bali + cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Poplar","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Arrow + crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Poplar","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Animals + by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Black + panther"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=740"}' + headers: + apim-request-id: cb9efd76-d56e-44af-9a72-ab5a04bbbf67 + content-length: '2369' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:34 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '84' + x-request-id: cb9efd76-d56e-44af-9a72-ab5a04bbbf67 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=720 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=740 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Black + panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Animals + by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Hazel","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Birch + (River Birch)","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bali + cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"African + elephant"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=760"}' + headers: + apim-request-id: 2b43aa7e-5194-4338-91bb-44ae069e1d74 + content-length: '2271' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:34 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '85' + x-request-id: 2b43aa7e-5194-4338-91bb-44ae069e1d74 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=740 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=760 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Box jellyfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bee"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=780"}' + headers: + apim-request-id: cb2bef62-82c8-4c8a-a700-af56b3b7aad0 + content-length: '2343' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:34 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '77' + x-request-id: cb2bef62-82c8-4c8a-a700-af56b3b7aad0 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=760 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=780 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"American + robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Ash","Dim2":"Arrow + crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian Lime","Dim2":"Bali + cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"American + robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese red-barked + birch","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Armadillo"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=800"}' + headers: + apim-request-id: 38504d7e-2104-4c20-b806-f7d93ba28d25 + content-length: '2280' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:35 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: 38504d7e-2104-4c20-b806-f7d93ba28d25 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=780 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=800 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Canidae"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"African + elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bali + cattle"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=820"}' + headers: + apim-request-id: bd4e9bf1-4722-4499-b296-97d4f9878b9b + content-length: '2329' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:35 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: bd4e9bf1-4722-4499-b296-97d4f9878b9b + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=800 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=820 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Arrow + crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bison"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=840"}' + headers: + apim-request-id: 944db0e2-a257-46b0-8f34-93126e5e57ae + content-length: '2347' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:35 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '78' + x-request-id: 944db0e2-a257-46b0-8f34-93126e5e57ae + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=820 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=840 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bovid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beaver"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=860"}' + headers: + apim-request-id: 655dc930-1521-46ff-861a-7d7d8eaaba5b + content-length: '2334' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:35 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '77' + x-request-id: 655dc930-1521-46ff-861a-7d7d8eaaba5b + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=840 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=860 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Baboon"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=880"}' + headers: + apim-request-id: 52cec5e1-8697-429d-8c9e-79b6c4074b3d + content-length: '2289' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:36 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '83' + x-request-id: 52cec5e1-8697-429d-8c9e-79b6c4074b3d + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=860 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=880 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Ass + (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Poplar","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Poplar","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Camel"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Arrow + crab"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=900"}' + headers: + apim-request-id: 144b74b2-8d31-45e4-a6e4-aa3f76f70f20 + content-length: '2285' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:36 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '82' + x-request-id: 144b74b2-8d31-45e4-a6e4-aa3f76f70f20 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=880 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=900 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Black + panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Poplar","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Capybara"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Poplar","Dim2":"Animals + by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Canid"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=920"}' + headers: + apim-request-id: 4407b0c4-b593-45a9-ab31-627e5fb0a1da + content-length: '2310' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:36 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '78' + x-request-id: 4407b0c4-b593-45a9-ab31-627e5fb0a1da + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=900 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=920 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Arabian + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Carp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Cape buffalo"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=940"}' + headers: + apim-request-id: 7a39a06b-d097-4236-99a1-5fb5ca81c64e + content-length: '2299' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:37 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '83' + x-request-id: 7a39a06b-d097-4236-99a1-5fb5ca81c64e + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=920 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=940 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Beaked + whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Caterpillar"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bali + cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Poplar","Dim2":"Bali + cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Birch + (River Birch)","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Baboon"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=960"}' + headers: + apim-request-id: 72878233-9c06-4262-b352-7fcecf10577e + content-length: '2303' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:37 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '81' + x-request-id: 72878233-9c06-4262-b352-7fcecf10577e + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=940 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=960 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Cat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Baboon"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=980"}' + headers: + apim-request-id: bc0dcc76-e2b6-4432-ba57-52749ad152cd + content-length: '2308' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:37 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: bc0dcc76-e2b6-4432-ba57-52749ad152cd + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=960 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=980 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Arabian + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"American + buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaked whale"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1000"}' + headers: + apim-request-id: 7d85d2d2-6f38-4d68-a94d-f5d01ec4cb18 + content-length: '2309' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:38 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '78' + x-request-id: 7d85d2d2-6f38-4d68-a94d-f5d01ec4cb18 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=980 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1000 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Black widow spider"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Beaked + whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Juniper","Dim2":"African + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Asp"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1020"}' + headers: + apim-request-id: a099eafc-1dd6-4581-9516-40f741bb956e + content-length: '2372' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:38 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '80' + x-request-id: a099eafc-1dd6-4581-9516-40f741bb956e + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=1000 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1020 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Arctic + Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian Lime","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Arctic + Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Birch + (River Birch)","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Beaked + whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bonobo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Arctic Fox"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1040"}' + headers: + apim-request-id: df1b1ff3-addf-4737-a06c-378b0de41c89 + content-length: '2321' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:38 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '81' + x-request-id: df1b1ff3-addf-4737-a06c-378b0de41c89 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=1020 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1040 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Buffalo, African"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Canidae"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Capybara"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Catfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Bali cattle"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1060"}' + headers: + apim-request-id: 36b59718-faa6-4317-a1a9-5ff2f28bcc49 + content-length: '2331' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:38 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: 36b59718-faa6-4317-a1a9-5ff2f28bcc49 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=1040 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1060 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Caribou"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Cardinal"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cotoneaster","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Cardinal"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1080"}' + headers: + apim-request-id: ce28c0e9-577c-4841-9956-5ac71bf02f2a + content-length: '2311' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '85' + x-request-id: ce28c0e9-577c-4841-9956-5ac71bf02f2a + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=1060 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1080 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Centipede"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Buzzard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Box jellyfish"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1100"}' + headers: + apim-request-id: b5dc410f-8a72-4400-b5a8-214f293ead9e + content-length: '2336' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: b5dc410f-8a72-4400-b5a8-214f293ead9e + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=1080 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1100 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Booby"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Boar"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Catfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"African + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bobcat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Arctic Wolf"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1120"}' + headers: + apim-request-id: 6f8d83ee-afd9-4ece-bc8f-c45d701ac98e + content-length: '2324' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:39 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '85' + x-request-id: 6f8d83ee-afd9-4ece-bc8f-c45d701ac98e + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=1100 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1120 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Booby"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African elephant"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1140"}' + headers: + apim-request-id: 183b5912-58e2-4b33-8b91-3650e3fa9094 + content-length: '2320' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:40 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: 183b5912-58e2-4b33-8b91-3650e3fa9094 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=1120 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1140 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Caribou"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Cheetah"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Arrow crab"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1160"}' + headers: + apim-request-id: b8fceef7-7b74-46c2-b901-35b29ebeb266 + content-length: '2315' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:40 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '80' + x-request-id: b8fceef7-7b74-46c2-b901-35b29ebeb266 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=1140 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1160 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"African + elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Centipede"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Boa"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Catshark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bobolink"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"American robin"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1180"}' + headers: + apim-request-id: 49da87ce-3754-4509-aa65-9072d60cf9a8 + content-length: '2335' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:40 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '77' + x-request-id: 49da87ce-3754-4509-aa65-9072d60cf9a8 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=1160 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1180 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bobcat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"American + buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Butterfly"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Blue whale"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1200"}' + headers: + apim-request-id: e404ca76-8d2c-4458-86c1-f9909a0d6364 + content-length: '2366' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:40 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '92' + x-request-id: e404ca76-8d2c-4458-86c1-f9909a0d6364 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=1180 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1200 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Bali + cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Mulberry","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"American + robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Lime","Dim2":"Bonobo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"African elephant"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1220"}' + headers: + apim-request-id: 55a7c58a-4ee7-4d98-b12e-05d11324bd8a + content-length: '2349' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:41 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: 55a7c58a-4ee7-4d98-b12e-05d11324bd8a + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=1200 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1220 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, African"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Ass (donkey)"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1240"}' + headers: + apim-request-id: b8036c6f-8044-4aec-90fe-f7f8a1f79f6c + content-length: '2339' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:41 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '80' + x-request-id: b8036c6f-8044-4aec-90fe-f7f8a1f79f6c + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=1220 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1240 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian Fir","Dim2":"Bear"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1260"}' + headers: + apim-request-id: 6d95127f-8ad7-4fae-8172-a2b7f648b8f0 + content-length: '2358' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:41 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '82' + x-request-id: 6d95127f-8ad7-4fae-8172-a2b7f648b8f0 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=1240 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1260 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Black widow spider"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Chameleon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Cephalopod"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Arabian + leopard"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1280"}' + headers: + apim-request-id: daa91278-9748-4214-8251-ce62230c862a + content-length: '2317' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:42 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '80' + x-request-id: daa91278-9748-4214-8251-ce62230c862a + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=1260 +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1280 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Boar"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arrow crab"}}],"@nextLink":null}' + headers: + apim-request-id: 48393a3f-d0cc-474f-b1d7-a8fc35746cba + content-length: '990' + content-type: application/json; charset=utf-8 + date: Tue, 22 Sep 2020 21:57:42 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '79' + x-request-id: 48393a3f-d0cc-474f-b1d7-a8fc35746cba + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/series/query?$top=20&$skip=1280 +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_metrics_series_data.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_metrics_series_data.yaml new file mode 100644 index 000000000000..f17109c6513a --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/recordings/test_metrics_advisor_client_live_async.test_list_metrics_series_data.yaml @@ -0,0 +1,33 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z", + "series": [{"city": "Mumbai", "category": "Shoes Handbags & Sunglasses"}]}' + headers: + Accept: + - application/json + Content-Length: + - '155' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/data/query + response: + body: + string: '{"value":[{"id":{"metricId":"metric_id","dimension":{"city":"Mumbai","category":"Shoes + Handbags & Sunglasses"}},"timestampList":[],"valueList":[]}]}' + headers: + apim-request-id: 6f6023a8-9b7d-4c1c-8bab-490028dc0bb8 + content-length: '175' + content-type: application/json; charset=utf-8 + date: Mon, 21 Sep 2020 16:55:14 GMT + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '434' + x-request-id: 6f6023a8-9b7d-4c1c-8bab-490028dc0bb8 + status: + code: 200 + message: OK + url: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/3d48ed3e-6e6e-4391-b78f-b00dfee1e6f5/data/query +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_anomaly_alert_config_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_anomaly_alert_config_async.py new file mode 100644 index 000000000000..8c09db7c9b21 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_anomaly_alert_config_async.py @@ -0,0 +1,1099 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +import pytest +from azure.core.exceptions import ResourceNotFoundError + +from azure.ai.metricsadvisor.models import ( + MetricAlertConfiguration, + MetricAnomalyAlertScope, + MetricAnomalyAlertConditions, + MetricBoundaryCondition, + TopNGroupScope, + SeverityCondition, + MetricAnomalyAlertSnoozeCondition +) +from base_testcase_async import TestMetricsAdvisorAdministrationClientBaseAsync + + +class TestMetricsAdvisorAdministrationClientAsync(TestMetricsAdvisorAdministrationClientBaseAsync): + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_anomaly_alert_config_top_n_alert_direction_both(self): + + detection_config, data_feed = await self._create_data_feed_and_anomaly_detection_config("topnup") + alert_config_name = self.create_random_name("testalert") + async with self.admin_client: + try: + alert_config = await self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + upper=5.0 + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "TopN") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.min_top_count, 9) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.period, 10) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.top, 5) + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper, 5.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower, 1.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + await self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + await self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_anomaly_alert_config_top_n_alert_direction_down(self): + + detection_config, data_feed = await self._create_data_feed_and_anomaly_detection_config("topnup") + alert_config_name = self.create_random_name("testalert") + async with self.admin_client: + try: + alert_config = await self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Down", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "TopN") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.min_top_count, 9) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.period, 10) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.top, 5) + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Down") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower, 1.0) + self.assertIsNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper) + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + await self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + await self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_anomaly_alert_config_top_n_alert_direction_up(self): + + detection_config, data_feed = await self._create_data_feed_and_anomaly_detection_config("topnup") + alert_config_name = self.create_random_name("testalert") + async with self.admin_client: + try: + alert_config = await self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Up", + companion_metric_id=data_feed.metric_ids[0], + upper=5.0, + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "TopN") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.min_top_count, 9) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.period, 10) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.top, 5) + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Up") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper, 5.0) + self.assertIsNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower) + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + await self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + await self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_anomaly_alert_config_top_n_severity_condition(self): + + detection_config, data_feed = await self._create_data_feed_and_anomaly_detection_config("topnup") + alert_config_name = self.create_random_name("testalert") + async with self.admin_client: + try: + alert_config = await self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "TopN") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.min_top_count, 9) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.period, 10) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.top, 5) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition.max_alert_severity, "High") + + await self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + await self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_anomaly_alert_config_snooze_condition(self): + + detection_config, data_feed = await self._create_data_feed_and_anomaly_detection_config("topnup") + alert_config_name = self.create_random_name("testalert") + async with self.admin_client: + try: + alert_config = await self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_snooze_condition=MetricAnomalyAlertSnoozeCondition( + auto_snooze=5, + snooze_scope="Metric", + only_for_successive=True + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "TopN") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.min_top_count, 9) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.period, 10) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.top, 5) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_snooze_condition.auto_snooze, 5) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_snooze_condition.snooze_scope, "Metric") + self.assertTrue( + alert_config.metric_alert_configurations[0].alert_snooze_condition.only_for_successive) + await self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + await self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_anomaly_alert_config_whole_series_alert_direction_both(self): + + detection_config, data_feed = await self._create_data_feed_and_anomaly_detection_config("wholeseries") + alert_config_name = self.create_random_name("testalert") + async with self.admin_client: + try: + alert_config = await self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries", + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + upper=5.0 + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "WholeSeries") + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper, 5.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower, 1.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + await self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + await self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_anomaly_alert_config_whole_series_alert_direction_down(self): + + detection_config, data_feed = await self._create_data_feed_and_anomaly_detection_config("wholeseries") + alert_config_name = self.create_random_name("testalert") + async with self.admin_client: + try: + alert_config = await self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Down", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "WholeSeries") + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Down") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower, 1.0) + self.assertIsNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper) + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + await self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + await self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_anomaly_alert_config_whole_series_alert_direction_up(self): + + detection_config, data_feed = await self._create_data_feed_and_anomaly_detection_config("wholeseries") + alert_config_name = self.create_random_name("testalert") + async with self.admin_client: + try: + alert_config = await self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Up", + companion_metric_id=data_feed.metric_ids[0], + upper=5.0, + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "WholeSeries") + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Up") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper, 5.0) + self.assertIsNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower) + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + await self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + await self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_anomaly_alert_config_whole_series_severity_condition(self): + + detection_config, data_feed = await self._create_data_feed_and_anomaly_detection_config("topnup") + alert_config_name = self.create_random_name("testalert") + async with self.admin_client: + try: + alert_config = await self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "WholeSeries") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition.max_alert_severity, "High") + + await self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + await self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_anomaly_alert_config_series_group_alert_direction_both(self): + + detection_config, data_feed = await self._create_data_feed_and_anomaly_detection_config("seriesgroup") + alert_config_name = self.create_random_name("testalert") + async with self.admin_client: + try: + alert_config = await self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + upper=5.0 + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "SeriesGroup") + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.series_group_in_scope, {'city': 'Shenzhen'}) + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper, 5.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower, 1.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + await self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + await self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_anomaly_alert_config_series_group_alert_direction_down(self): + + detection_config, data_feed = await self._create_data_feed_and_anomaly_detection_config("seriesgroup") + alert_config_name = self.create_random_name("testalert") + async with self.admin_client: + try: + alert_config = await self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Down", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "SeriesGroup") + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.series_group_in_scope, {'city': 'Shenzhen'}) + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Down") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower, 1.0) + self.assertIsNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper) + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + await self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + await self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_anomaly_alert_config_series_group_alert_direction_up(self): + + detection_config, data_feed = await self._create_data_feed_and_anomaly_detection_config("seriesgroup") + alert_config_name = self.create_random_name("testalert") + async with self.admin_client: + try: + alert_config = await self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Up", + companion_metric_id=data_feed.metric_ids[0], + upper=5.0, + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "SeriesGroup") + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.series_group_in_scope, {'city': 'Shenzhen'}) + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Up") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper, 5.0) + self.assertIsNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower) + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + await self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + await self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_anomaly_alert_config_series_group_severity_condition(self): + + detection_config, data_feed = await self._create_data_feed_and_anomaly_detection_config("seriesgroupsev") + alert_config_name = self.create_random_name("testalert") + async with self.admin_client: + try: + alert_config = await self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "SeriesGroup") + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.series_group_in_scope, {'city': 'Shenzhen'}) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition.max_alert_severity, "High") + + await self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + await self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_anomaly_alert_config_multiple_configurations(self): + + detection_config, data_feed = await self._create_data_feed_and_anomaly_detection_config("multiple") + alert_config_name = self.create_random_name("testalert") + async with self.admin_client: + try: + alert_config = await self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + cross_metrics_operator="AND", + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + upper=5.0 + ) + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ) + ], + hook_ids=[] + ) + self.assertEqual(alert_config.cross_metrics_operator, "AND") + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 3) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "TopN") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.min_top_count, 9) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.period, 10) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.top, 5) + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper, 5.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower, 1.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + self.assertEqual(alert_config.metric_alert_configurations[1].alert_scope.scope_type, "SeriesGroup") + self.assertEqual( + alert_config.metric_alert_configurations[1].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual( + alert_config.metric_alert_configurations[1].alert_conditions.severity_condition.max_alert_severity, "High") + self.assertEqual(alert_config.metric_alert_configurations[2].alert_scope.scope_type, "WholeSeries") + self.assertEqual( + alert_config.metric_alert_configurations[2].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual( + alert_config.metric_alert_configurations[2].alert_conditions.severity_condition.max_alert_severity, "High") + + await self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + await self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_list_anomaly_alert_configs(self): + async with self.admin_client: + configs = self.admin_client.list_anomaly_alert_configurations( + detection_configuration_id=self.anomaly_detection_configuration_id + ) + config_list = [] + async for config in configs: + config_list.append(config) + assert len(list(config_list)) > 0 + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_anomaly_alert_config_with_model(self): + async with self.admin_client: + try: + alert_config, data_feed, _ = await self._create_anomaly_alert_config_for_update("alertupdate") + + alert_config.name = "update" + alert_config.description = "update description" + alert_config.cross_metrics_operator = "OR" + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition = \ + SeverityCondition(max_alert_severity="High", min_alert_severity="Low") + alert_config.metric_alert_configurations[1].alert_conditions.metric_boundary_condition = \ + MetricBoundaryCondition( + direction="Both", + upper=5, + lower=1 + ) + alert_config.metric_alert_configurations[2].alert_conditions.metric_boundary_condition = \ + MetricBoundaryCondition( + direction="Both", + upper=5, + lower=1 + ) + + updated = await self.admin_client.update_anomaly_alert_configuration(alert_config) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "update description") + self.assertEqual(updated.cross_metrics_operator, "OR") + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.severity_condition.max_alert_severity, "High") + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.upper, 5) + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.lower, 1) + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.upper, 5) + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.lower, 1) + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_anomaly_alert_config_with_kwargs(self): + async with self.admin_client: + try: + alert_config, data_feed, detection_config = await self._create_anomaly_alert_config_for_update("alertupdate") + updated = await self.admin_client.update_anomaly_alert_configuration( + alert_config.id, + name="update", + description="update description", + cross_metrics_operator="OR", + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + upper=5.0 + ), + severity_condition=SeverityCondition(max_alert_severity="High", min_alert_severity="Low") + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ), + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + upper=5, + lower=1 + ) + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ), + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + upper=5, + lower=1 + ) + ) + ) + ] + ) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "update description") + self.assertEqual(updated.cross_metrics_operator, "OR") + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.severity_condition.max_alert_severity, "High") + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.upper, 5) + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.lower, 1) + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.upper, 5) + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.lower, 1) + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_anomaly_alert_config_with_model_and_kwargs(self): + async with self.admin_client: + try: + alert_config, data_feed, detection_config = await self._create_anomaly_alert_config_for_update("alertupdate") + + alert_config.name = "updateMe" + alert_config.description = "updateMe" + alert_config.cross_metrics_operator = "don't update me" + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition = None + alert_config.metric_alert_configurations[1].alert_conditions.metric_boundary_condition = None + alert_config.metric_alert_configurations[2].alert_conditions.metric_boundary_condition = None + + updated = await self.admin_client.update_anomaly_alert_configuration( + alert_config, + cross_metrics_operator="OR", + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + upper=5.0 + ), + severity_condition=SeverityCondition(max_alert_severity="High", min_alert_severity="Low") + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ), + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + upper=5, + lower=1 + ) + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ), + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + upper=5, + lower=1 + ) + ) + ) + ] + ) + + self.assertEqual(updated.name, "updateMe") + self.assertEqual(updated.description, "updateMe") + self.assertEqual(updated.cross_metrics_operator, "OR") + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.severity_condition.max_alert_severity, "High") + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.upper, 5) + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.lower, 1) + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.upper, 5) + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.lower, 1) + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_anomaly_alert_by_resetting_properties(self): + async with self.admin_client: + try: + alert_config, data_feed, detection_config = await self._create_anomaly_alert_config_for_update("alertupdate") + updated = await self.admin_client.update_anomaly_alert_configuration( + alert_config.id, + name="reset", + description="", # can't pass None currently, bug says description is required + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=None + ) + ] + ) + + self.assertEqual(updated.name, "reset") + self.assertEqual(updated.description, "") + self.assertEqual(updated.cross_metrics_operator, None) + self.assertEqual(len(updated.metric_alert_configurations), 1) + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.severity_condition, None) + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.metric_boundary_condition, None) + + finally: + await self.admin_client.delete_data_feed(data_feed.id) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_data_feed_ingestion_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_data_feed_ingestion_async.py new file mode 100644 index 000000000000..7e386ffe49f1 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_data_feed_ingestion_async.py @@ -0,0 +1,70 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +import datetime +from dateutil.tz import tzutc +import pytest + +from base_testcase_async import TestMetricsAdvisorAdministrationClientBaseAsync + + +class TestMetricsAdvisorAdministrationClientAsync(TestMetricsAdvisorAdministrationClientBaseAsync): + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_get_data_feed_ingestion_progress(self): + async with self.admin_client: + ingestion = await self.admin_client.get_data_feed_ingestion_progress( + data_feed_id=self.data_feed_id + ) + self.assertIsNotNone(ingestion.latest_success_timestamp) + self.assertIsNotNone(ingestion.latest_active_timestamp) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_list_data_feed_ingestion_status(self): + async with self.admin_client: + ingestions = self.admin_client.list_data_feed_ingestion_status( + data_feed_id=self.data_feed_id, + start_time=datetime.datetime(2020, 8, 9, tzinfo=tzutc()), + end_time=datetime.datetime(2020, 9, 16, tzinfo=tzutc()), + ) + ingestions_list = [] + async for status in ingestions: + ingestions_list.append(status) + assert len(list(ingestions_list)) > 0 + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_list_data_feed_ingestion_status_with_skip(self): + async with self.admin_client: + ingestions = self.admin_client.list_data_feed_ingestion_status( + data_feed_id=self.data_feed_id, + start_time=datetime.datetime(2020, 8, 9, tzinfo=tzutc()), + end_time=datetime.datetime(2020, 9, 16, tzinfo=tzutc()), + ) + + ingestions_with_skips = self.admin_client.list_data_feed_ingestion_status( + data_feed_id=self.data_feed_id, + start_time=datetime.datetime(2020, 8, 9, tzinfo=tzutc()), + end_time=datetime.datetime(2020, 9, 16, tzinfo=tzutc()), + skip=5 + ) + ingestions_list = [] + async for status in ingestions: + ingestions_list.append(status) + + ingestions_with_skips_list = [] + async for status in ingestions_with_skips: + ingestions_with_skips_list.append(status) + + assert len(ingestions_list) == len(ingestions_with_skips_list) + 5 + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_refresh_data_feed_ingestion(self): + async with self.admin_client: + await self.admin_client.refresh_data_feed_ingestion( + self.data_feed_id, + start_time=datetime.datetime(2019, 10, 1, tzinfo=tzutc()), + end_time=datetime.datetime(2020, 10, 3, tzinfo=tzutc()), + ) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_data_feeds_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_data_feeds_async.py new file mode 100644 index 000000000000..e76d7e1cba96 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_data_feeds_async.py @@ -0,0 +1,1095 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +import datetime +from dateutil.tz import tzutc +import pytest +from azure.core.exceptions import ResourceNotFoundError + +from azure.ai.metricsadvisor.models import ( + SQLServerDataFeed, + AzureTableDataFeed, + AzureBlobDataFeed, + AzureCosmosDBDataFeed, + HttpRequestDataFeed, + Metric, + Dimension, + DataFeedSchema, + DataFeedIngestionSettings, + DataFeedGranularity, + DataFeedOptions, + DataFeedMissingDataPointFillSettings, + DataFeedRollupSettings, + AzureApplicationInsightsDataFeed, + AzureDataExplorerDataFeed, + InfluxDBDataFeed, + AzureDataLakeStorageGen2DataFeed, + MongoDBDataFeed, + MySqlDataFeed, + PostgreSqlDataFeed, + ElasticsearchDataFeed +) +from base_testcase_async import TestMetricsAdvisorAdministrationClientBaseAsync + + +class TestMetricsAdvisorAdministrationClientAsync(TestMetricsAdvisorAdministrationClientBaseAsync): + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_simple_data_feed(self): + data_feed_name = self.create_random_name("testfeed") + async with self.admin_client: + try: + data_feed = await self.admin_client.create_data_feed( + name=data_feed_name, + source=SQLServerDataFeed( + connection_string=self.sql_server_connection_string, + query="select * from adsample2 where Timestamp = @StartTime" + ), + granularity="Daily", + schema=["cost", "revenue"], + ingestion_settings=datetime.datetime(2019, 10, 1) + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "SqlServer") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertIsNotNone(data_feed.source.query) + self.assertEqual(data_feed.granularity.granularity_type, "Daily") + self.assertEqual(data_feed.schema.metrics[0].name, "cost") + self.assertEqual(data_feed.schema.metrics[1].name, "revenue") + self.assertEqual(data_feed.ingestion_settings.ingestion_begin_time, + datetime.datetime(2019, 10, 1, tzinfo=tzutc())) + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_data_feed_from_sql_server(self): + + data_feed_name = self.create_random_name("testfeedasync") + async with self.admin_client: + try: + data_feed = await self.admin_client.create_data_feed( + name=data_feed_name, + source=SQLServerDataFeed( + connection_string=self.sql_server_connection_string, + query=u"select * from adsample2 where Timestamp = @StartTime" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost", display_name="display cost", description="the cost"), + Metric(name="revenue", display_name="display revenue", description="the revenue") + ], + dimensions=[ + Dimension(name="category", display_name="display category"), + Dimension(name="city", display_name="display city") + ], + timestamp_column="Timestamp" + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + data_source_request_concurrency=0, + ingestion_retry_delay=-1, + ingestion_start_offset=-1, + stop_retry_after=-1, + ), + options=DataFeedOptions( + admins=["yournamehere@microsoft.com"], + data_feed_description="my first data feed", + missing_data_point_fill_settings=DataFeedMissingDataPointFillSettings( + fill_type="SmartFilling" + ), + rollup_settings=DataFeedRollupSettings( + rollup_type="NoRollup", + rollup_method="None", + ), + viewers=["viewers"], + access_mode="Private", + action_link_template="action link template" + ) + + ) + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "SqlServer") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertIsNotNone(data_feed.source.query) + self.assertEqual(data_feed.granularity.granularity_type, "Daily") + self.assertEqual(data_feed.granularity.custom_granularity_value, None) + self.assertEqual(data_feed.schema.metrics[0].name, "cost") + self.assertEqual(data_feed.schema.metrics[1].name, "revenue") + self.assertEqual(data_feed.schema.metrics[0].display_name, "display cost") + self.assertEqual(data_feed.schema.metrics[1].display_name, "display revenue") + self.assertEqual(data_feed.schema.metrics[0].description, "the cost") + self.assertEqual(data_feed.schema.metrics[1].description, "the revenue") + self.assertEqual(data_feed.schema.dimensions[0].name, "category") + self.assertEqual(data_feed.schema.dimensions[1].name, "city") + self.assertEqual(data_feed.schema.dimensions[0].display_name, "display category") + self.assertEqual(data_feed.schema.dimensions[1].display_name, "display city") + self.assertEqual(data_feed.ingestion_settings.ingestion_begin_time, + datetime.datetime(2019, 10, 1, tzinfo=tzutc())) + self.assertEqual(data_feed.ingestion_settings.data_source_request_concurrency, 0) + self.assertEqual(data_feed.ingestion_settings.ingestion_retry_delay, -1) + self.assertEqual(data_feed.ingestion_settings.ingestion_start_offset, -1) + self.assertEqual(data_feed.ingestion_settings.stop_retry_after, -1) + self.assertIn("yournamehere@microsoft.com", data_feed.options.admins) + self.assertEqual(data_feed.options.data_feed_description, "my first data feed") + self.assertEqual(data_feed.options.missing_data_point_fill_settings.fill_type, "SmartFilling") + self.assertEqual(data_feed.options.rollup_settings.rollup_type, "NoRollup") + self.assertEqual(data_feed.options.rollup_settings.rollup_method, "None") + self.assertEqual(data_feed.options.viewers, ["viewers"]) + self.assertEqual(data_feed.options.access_mode, "Private") + self.assertEqual(data_feed.options.action_link_template, "action link template") + self.assertEqual(data_feed.status, "Active") + self.assertTrue(data_feed.is_admin) + self.assertIsNotNone(data_feed.metric_ids) + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_data_feed_from_sql_server_with_custom_values(self): + + data_feed_name = self.create_random_name("testfeedasync") + async with self.admin_client: + try: + data_feed = await self.admin_client.create_data_feed( + name=data_feed_name, + source=SQLServerDataFeed( + connection_string=self.sql_server_connection_string, + query=u"select * from adsample2 where Timestamp = @StartTime" + ), + granularity=DataFeedGranularity( + granularity_type="Custom", + custom_granularity_value=20 + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost", display_name="display cost", description="the cost"), + Metric(name="revenue", display_name="display revenue", description="the revenue") + ], + dimensions=[ + Dimension(name="category", display_name="display category"), + Dimension(name="city", display_name="display city") + ], + timestamp_column="Timestamp" + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + data_source_request_concurrency=0, + ingestion_retry_delay=-1, + ingestion_start_offset=-1, + stop_retry_after=-1, + ), + options=DataFeedOptions( + admins=["yournamehere@microsoft.com"], + data_feed_description="my first data feed", + missing_data_point_fill_settings=DataFeedMissingDataPointFillSettings( + fill_type="CustomValue", + custom_fill_value=10 + ), + rollup_settings=DataFeedRollupSettings( + rollup_type="AlreadyRollup", + rollup_method="Sum", + rollup_identification_value="sumrollup" + ), + viewers=["viewers"], + access_mode="Private", + action_link_template="action link template" + ) + + ) + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "SqlServer") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertIsNotNone(data_feed.source.query) + self.assertEqual(data_feed.granularity.granularity_type, "Custom") + self.assertEqual(data_feed.granularity.custom_granularity_value, 20) + self.assertEqual(data_feed.schema.metrics[0].name, "cost") + self.assertEqual(data_feed.schema.metrics[1].name, "revenue") + self.assertEqual(data_feed.schema.metrics[0].display_name, "display cost") + self.assertEqual(data_feed.schema.metrics[1].display_name, "display revenue") + self.assertEqual(data_feed.schema.metrics[0].description, "the cost") + self.assertEqual(data_feed.schema.metrics[1].description, "the revenue") + self.assertEqual(data_feed.schema.dimensions[0].name, "category") + self.assertEqual(data_feed.schema.dimensions[1].name, "city") + self.assertEqual(data_feed.schema.dimensions[0].display_name, "display category") + self.assertEqual(data_feed.schema.dimensions[1].display_name, "display city") + self.assertEqual(data_feed.ingestion_settings.ingestion_begin_time, + datetime.datetime(2019, 10, 1, tzinfo=tzutc())) + self.assertEqual(data_feed.ingestion_settings.data_source_request_concurrency, 0) + self.assertEqual(data_feed.ingestion_settings.ingestion_retry_delay, -1) + self.assertEqual(data_feed.ingestion_settings.ingestion_start_offset, -1) + self.assertEqual(data_feed.ingestion_settings.stop_retry_after, -1) + self.assertIn("yournamehere@microsoft.com", data_feed.options.admins) + self.assertEqual(data_feed.options.data_feed_description, "my first data feed") + self.assertEqual(data_feed.options.missing_data_point_fill_settings.fill_type, "CustomValue") + self.assertEqual(data_feed.options.missing_data_point_fill_settings.custom_fill_value, 10) + self.assertEqual(data_feed.options.rollup_settings.rollup_type, "AlreadyRollup") + self.assertEqual(data_feed.options.rollup_settings.rollup_method, "Sum") + self.assertEqual(data_feed.options.rollup_settings.rollup_identification_value, "sumrollup") + self.assertEqual(data_feed.options.viewers, ["viewers"]) + self.assertEqual(data_feed.options.access_mode, "Private") + self.assertEqual(data_feed.options.action_link_template, "action link template") + self.assertEqual(data_feed.status, "Active") + self.assertTrue(data_feed.is_admin) + self.assertIsNotNone(data_feed.metric_ids) + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_data_feed_with_azure_table(self): + name = self.create_random_name("tablefeedasync") + async with self.admin_client: + try: + data_feed = await self.admin_client.create_data_feed( + name=name, + source=AzureTableDataFeed( + connection_string=self.azure_table_connection_string, + query="PartitionKey ge '@StartTime' and PartitionKey lt '@EndTime'", + table="adsample" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "AzureTable") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertEqual(data_feed.source.table, "adsample") + self.assertEqual(data_feed.source.query, "PartitionKey ge '@StartTime' and PartitionKey lt '@EndTime'") + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_data_feed_with_azure_blob(self): + name = self.create_random_name("blobfeedasync") + async with self.admin_client: + try: + data_feed = await self.admin_client.create_data_feed( + name=name, + source=AzureBlobDataFeed( + connection_string=self.azure_blob_connection_string, + container="adsample", + blob_template="%Y/%m/%d/%h/JsonFormatV2.json" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "AzureBlob") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertEqual(data_feed.source.container, "adsample") + self.assertEqual(data_feed.source.blob_template, "%Y/%m/%d/%h/JsonFormatV2.json") + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_data_feed_with_azure_cosmos_db(self): + name = self.create_random_name("cosmosfeedasync") + async with self.admin_client: + try: + data_feed = await self.admin_client.create_data_feed( + name=name, + source=AzureCosmosDBDataFeed( + connection_string=self.azure_cosmosdb_connection_string, + sql_query="'SELECT * FROM Items I where I.Timestamp >= @StartTime and I.Timestamp < @EndTime'", + database="adsample", + collection_id="adsample" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "AzureCosmosDB") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertEqual(data_feed.source.database, "adsample") + self.assertEqual(data_feed.source.collection_id, "adsample") + self.assertEqual(data_feed.source.sql_query, "'SELECT * FROM Items I where I.Timestamp >= @StartTime and I.Timestamp < @EndTime'") + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_data_feed_with_http_request_get(self): + name = self.create_random_name("httprequestfeedgetasync") + async with self.admin_client: + try: + data_feed = await self.admin_client.create_data_feed( + name=name, + source=HttpRequestDataFeed( + url=self.http_request_get_url, + http_method="GET" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "HttpRequest") + self.assertIsNotNone(data_feed.source.url) + self.assertEqual(data_feed.source.http_method, "GET") + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_data_feed_with_http_request_post(self): + name = self.create_random_name("httprequestfeedpostasync") + async with self.admin_client: + try: + data_feed = await self.admin_client.create_data_feed( + name=name, + source=HttpRequestDataFeed( + url=self.http_request_post_url, + http_method="POST", + payload="{'startTime': '@StartTime'}" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "HttpRequest") + self.assertIsNotNone(data_feed.source.url) + self.assertEqual(data_feed.source.http_method, "POST") + self.assertEqual(data_feed.source.payload, "{'startTime': '@StartTime'}") + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_data_feed_with_application_insights(self): + name = self.create_random_name("applicationinsightsasync") + async with self.admin_client: + try: + query = "let gran=60m; let starttime=datetime(@StartTime); let endtime=starttime + gran; requests | " \ + "where timestamp >= starttime and timestamp < endtime | summarize request_count = count(), " \ + "duration_avg_ms = avg(duration), duration_95th_ms = percentile(duration, 95), " \ + "duration_max_ms = max(duration) by resultCode" + data_feed = await self.admin_client.create_data_feed( + name=name, + source=AzureApplicationInsightsDataFeed( + azure_cloud="Azure", + application_id="3706fe8b-98f1-47c7-bf69-b73b6e53274d", + api_key=self.application_insights_api_key, + query=query + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2020, 7, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "AzureApplicationInsights") + self.assertIsNotNone(data_feed.source.api_key) + self.assertEqual(data_feed.source.application_id, "3706fe8b-98f1-47c7-bf69-b73b6e53274d") + self.assertEqual(data_feed.source.query, query) + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_data_feed_with_data_explorer(self): + name = self.create_random_name("azuredataexplorerasync") + async with self.admin_client: + try: + query = "let StartDateTime = datetime(@StartTime); let EndDateTime = StartDateTime + 1d; " \ + "adsample | where Timestamp >= StartDateTime and Timestamp < EndDateTime" + data_feed = await self.admin_client.create_data_feed( + name=name, + source=AzureDataExplorerDataFeed( + connection_string=self.azure_data_explorer_connection_string, + query=query + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 1, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "AzureDataExplorer") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertEqual(data_feed.source.query, query) + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_data_feed_with_influxdb(self): + name = self.create_random_name("influxdbasync") + async with self.admin_client: + try: + data_feed = await self.admin_client.create_data_feed( + name=name, + source=InfluxDBDataFeed( + connection_string=self.influxdb_connection_string, + database="adsample", + user_name="adreadonly", + password=self.influxdb_password, + query="'select * from adsample2 where Timestamp = @StartTime'" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 1, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "InfluxDB") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertIsNotNone(data_feed.source.query) + self.assertIsNotNone(data_feed.source.password) + self.assertEqual(data_feed.source.database, "adsample") + self.assertEqual(data_feed.source.user_name, "adreadonly") + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_data_feed_with_datalake(self): + name = self.create_random_name("datalakeasync") + async with self.admin_client: + try: + data_feed = await self.admin_client.create_data_feed( + name=name, + source=AzureDataLakeStorageGen2DataFeed( + account_name="adsampledatalakegen2", + account_key=self.azure_datalake_account_key, + file_system_name="adsample", + directory_template="%Y/%m/%d", + file_template="adsample.json" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost", display_name="Cost"), + Metric(name="revenue", display_name="Revenue") + ], + dimensions=[ + Dimension(name="category", display_name="Category"), + Dimension(name="city", display_name="City") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 1, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "AzureDataLakeStorageGen2") + self.assertIsNotNone(data_feed.source.account_key) + self.assertEqual(data_feed.source.account_name, "adsampledatalakegen2") + self.assertEqual(data_feed.source.file_system_name, "adsample") + self.assertEqual(data_feed.source.directory_template, "%Y/%m/%d") + self.assertEqual(data_feed.source.file_template, "adsample.json") + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_data_feed_with_mongodb(self): + name = self.create_random_name("mongodbasync") + async with self.admin_client: + try: + data_feed = await self.admin_client.create_data_feed( + name=name, + source=MongoDBDataFeed( + connection_string=self.mongodb_connection_string, + database="adsample", + command='{"find": "adsample", "filter": { Timestamp: { $eq: @StartTime }} "batchSize": 2000,}' + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 1, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "MongoDB") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertEqual(data_feed.source.database, "adsample") + self.assertEqual(data_feed.source.command, '{"find": "adsample", "filter": { Timestamp: { $eq: @StartTime }} "batchSize": 2000,}') + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_data_feed_with_mysql(self): + name = self.create_random_name("mysqlasync") + async with self.admin_client: + try: + data_feed = await self.admin_client.create_data_feed( + name=name, + source=MySqlDataFeed( + connection_string=self.mysql_connection_string, + query="'select * from adsample2 where Timestamp = @StartTime'" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 1, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "MySql") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertEqual(data_feed.source.query, "'select * from adsample2 where Timestamp = @StartTime'") + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_data_feed_with_postgresql(self): + name = self.create_random_name("postgresqlasync") + async with self.admin_client: + try: + data_feed = await self.admin_client.create_data_feed( + name=name, + source=PostgreSqlDataFeed( + connection_string=self.postgresql_connection_string, + query="'select * from adsample2 where Timestamp = @StartTime'" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 1, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "PostgreSql") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertEqual(data_feed.source.query, "'select * from adsample2 where Timestamp = @StartTime'") + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_data_feed_with_elasticsearch(self): + name = self.create_random_name("elasticasync") + async with self.admin_client: + try: + data_feed = await self.admin_client.create_data_feed( + name=name, + source=ElasticsearchDataFeed( + host="ad-sample-es.westus2.cloudapp.azure.com", + port="9200", + auth_header=self.elasticsearch_auth_header, + query="'select * from adsample where timestamp = @StartTime'" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost", display_name="Cost"), + Metric(name="revenue", display_name="Revenue") + ], + dimensions=[ + Dimension(name="category", display_name="Category"), + Dimension(name="city", display_name="City") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 1, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "Elasticsearch") + self.assertIsNotNone(data_feed.source.auth_header) + self.assertEqual(data_feed.source.port, "9200") + self.assertEqual(data_feed.source.host, "ad-sample-es.westus2.cloudapp.azure.com") + self.assertEqual(data_feed.source.query, "'select * from adsample where timestamp = @StartTime'") + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_list_data_feeds(self): + async with self.admin_client: + feeds = self.admin_client.list_data_feeds() + feeds_list = [] + async for item in feeds: + feeds_list.append(item) + assert len(feeds_list) > 0 + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_list_data_feeds_with_data_feed_name(self): + async with self.admin_client: + feeds = self.admin_client.list_data_feeds(data_feed_name="testDataFeed1") + feeds_list = [] + async for item in feeds: + feeds_list.append(item) + assert len(feeds_list) == 1 + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_list_data_feeds_with_status(self): + async with self.admin_client: + feeds = self.admin_client.list_data_feeds(status="Paused") + feeds_list = [] + async for item in feeds: + feeds_list.append(item) + assert len(feeds_list) == 0 + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_list_data_feeds_with_source_type(self): + async with self.admin_client: + feeds = self.admin_client.list_data_feeds(data_source_type="AzureBlob") + feeds_list = [] + async for item in feeds: + feeds_list.append(item) + assert len(feeds_list) > 0 + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_list_data_feeds_with_granularity_type(self): + async with self.admin_client: + feeds = self.admin_client.list_data_feeds(granularity_type="Daily") + feeds_list = [] + async for item in feeds: + feeds_list.append(item) + assert len(feeds_list) > 0 + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_list_data_feeds_with_skip(self): + async with self.admin_client: + all_feeds = self.admin_client.list_data_feeds() + skipped_feeds = self.admin_client.list_data_feeds(skip=1) + all_feeds_list = [] + skipped_feeds_list = [] + async for feed in all_feeds: + all_feeds_list.append(feed) + async for feed in skipped_feeds: + skipped_feeds_list.append(feed) + assert len(all_feeds_list) == len(skipped_feeds_list) + 1 + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_data_feed_with_model(self): + async with self.admin_client: + data_feed = await self._create_data_feed_for_update("update") + try: + data_feed.name = "update" + data_feed.options.data_feed_description = "updated" + data_feed.schema.timestamp_column = "time" + data_feed.ingestion_settings.ingestion_begin_time = datetime.datetime(2020, 12, 10) + data_feed.ingestion_settings.ingestion_start_offset = 1 + data_feed.ingestion_settings.data_source_request_concurrency = 1 + data_feed.ingestion_settings.ingestion_retry_delay = 1 + data_feed.ingestion_settings.stop_retry_after = 1 + data_feed.options.rollup_settings.rollup_type = "AlreadyRollup" + data_feed.options.rollup_settings.rollup_method = "Sum" + data_feed.options.rollup_settings.rollup_identification_value = "sumrollup" + data_feed.options.rollup_settings.auto_rollup_group_by_column_names = [] + data_feed.options.missing_data_point_fill_settings.fill_type = "CustomValue" + data_feed.options.missing_data_point_fill_settings.custom_fill_value = 2 + data_feed.options.access_mode = "Public" + data_feed.options.viewers = ["updated"] + data_feed.status = "Paused" + data_feed.options.action_link_template = "updated" + data_feed.source.connection_string = "updated" + data_feed.source.query = "get data" + + updated = await self.admin_client.update_data_feed(data_feed) + self.assertEqual(updated.name, "update") + self.assertEqual(updated.options.data_feed_description, "updated") + self.assertEqual(updated.schema.timestamp_column, "time") + self.assertEqual(updated.ingestion_settings.ingestion_begin_time, + datetime.datetime(2020, 12, 10, tzinfo=tzutc())) + self.assertEqual(updated.ingestion_settings.ingestion_start_offset, 1) + self.assertEqual(updated.ingestion_settings.data_source_request_concurrency, 1) + self.assertEqual(updated.ingestion_settings.ingestion_retry_delay, 1) + self.assertEqual(updated.ingestion_settings.stop_retry_after, 1) + self.assertEqual(updated.options.rollup_settings.rollup_type, "AlreadyRollup") + self.assertEqual(updated.options.rollup_settings.rollup_method, "Sum") + self.assertEqual(updated.options.rollup_settings.rollup_identification_value, "sumrollup") + self.assertEqual(updated.options.rollup_settings.auto_rollup_group_by_column_names, []) + self.assertEqual(updated.options.missing_data_point_fill_settings.fill_type, "CustomValue") + self.assertEqual(updated.options.missing_data_point_fill_settings.custom_fill_value, 2) + self.assertEqual(updated.options.access_mode, "Public") + self.assertEqual(updated.options.viewers, ["updated"]) + self.assertEqual(updated.status, "Paused") + self.assertEqual(updated.options.action_link_template, "updated") + self.assertEqual(updated.source.connection_string, "updated") + self.assertEqual(updated.source.query, "get data") + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_data_feed_with_kwargs(self): + async with self.admin_client: + data_feed = await self._create_data_feed_for_update("update") + try: + updated = await self.admin_client.update_data_feed( + data_feed.id, + name="update", + data_feed_description="updated", + timestamp_column="time", + ingestion_begin_time=datetime.datetime(2020, 12, 10), + ingestion_start_offset=1, + data_source_request_concurrency=1, + ingestion_retry_delay=1, + stop_retry_after=1, + rollup_type="AlreadyRollup", + rollup_method="Sum", + rollup_identification_value="sumrollup", + auto_rollup_group_by_column_names=[], + fill_type="CustomValue", + custom_fill_value=2, + access_mode="Public", + viewers=["updated"], + status="Paused", + action_link_template="updated", + source=SQLServerDataFeed( + connection_string="updated", + query="get data" + ) + ) + self.assertEqual(updated.name, "update") + self.assertEqual(updated.options.data_feed_description, "updated") + self.assertEqual(updated.schema.timestamp_column, "time") + self.assertEqual(updated.ingestion_settings.ingestion_begin_time, + datetime.datetime(2020, 12, 10, tzinfo=tzutc())) + self.assertEqual(updated.ingestion_settings.ingestion_start_offset, 1) + self.assertEqual(updated.ingestion_settings.data_source_request_concurrency, 1) + self.assertEqual(updated.ingestion_settings.ingestion_retry_delay, 1) + self.assertEqual(updated.ingestion_settings.stop_retry_after, 1) + self.assertEqual(updated.options.rollup_settings.rollup_type, "AlreadyRollup") + self.assertEqual(updated.options.rollup_settings.rollup_method, "Sum") + self.assertEqual(updated.options.rollup_settings.rollup_identification_value, "sumrollup") + self.assertEqual(updated.options.rollup_settings.auto_rollup_group_by_column_names, []) + self.assertEqual(updated.options.missing_data_point_fill_settings.fill_type, "CustomValue") + self.assertEqual(updated.options.missing_data_point_fill_settings.custom_fill_value, 2) + self.assertEqual(updated.options.access_mode, "Public") + self.assertEqual(updated.options.viewers, ["updated"]) + self.assertEqual(updated.status, "Paused") + self.assertEqual(updated.options.action_link_template, "updated") + self.assertEqual(updated.source.connection_string, "updated") + self.assertEqual(updated.source.query, "get data") + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_data_feed_with_model_and_kwargs(self): + async with self.admin_client: + data_feed = await self._create_data_feed_for_update("update") + try: + data_feed.name = "updateMe" + data_feed.options.data_feed_description = "updateMe" + data_feed.schema.timestamp_column = "don't update me" + data_feed.ingestion_settings.ingestion_begin_time = datetime.datetime(2020, 12, 22) + data_feed.ingestion_settings.ingestion_start_offset = 2 + data_feed.ingestion_settings.data_source_request_concurrency = 2 + data_feed.ingestion_settings.ingestion_retry_delay = 2 + data_feed.ingestion_settings.stop_retry_after = 2 + data_feed.options.rollup_settings.rollup_type = "don't update me" + data_feed.options.rollup_settings.rollup_method = "don't update me" + data_feed.options.rollup_settings.rollup_identification_value = "don't update me" + data_feed.options.rollup_settings.auto_rollup_group_by_column_names = [] + data_feed.options.missing_data_point_fill_settings.fill_type = "don't update me" + data_feed.options.missing_data_point_fill_settings.custom_fill_value = 4 + data_feed.options.access_mode = "don't update me" + data_feed.options.viewers = ["don't update me"] + data_feed.status = "don't update me" + data_feed.options.action_link_template = "don't update me" + data_feed.source.connection_string = "don't update me" + data_feed.source.query = "don't update me" + + updated = await self.admin_client.update_data_feed( + data_feed, + timestamp_column="time", + ingestion_begin_time=datetime.datetime(2020, 12, 10), + ingestion_start_offset=1, + data_source_request_concurrency=1, + ingestion_retry_delay=1, + stop_retry_after=1, + rollup_type="AlreadyRollup", + rollup_method="Sum", + rollup_identification_value="sumrollup", + auto_rollup_group_by_column_names=[], + fill_type="CustomValue", + custom_fill_value=2, + access_mode="Public", + viewers=["updated"], + status="Paused", + action_link_template="updated", + source=SQLServerDataFeed( + connection_string="updated", + query="get data" + ) + ) + self.assertEqual(updated.name, "updateMe") + self.assertEqual(updated.options.data_feed_description, "updateMe") + self.assertEqual(updated.schema.timestamp_column, "time") + self.assertEqual(updated.ingestion_settings.ingestion_begin_time, + datetime.datetime(2020, 12, 10, tzinfo=tzutc())) + self.assertEqual(updated.ingestion_settings.ingestion_start_offset, 1) + self.assertEqual(updated.ingestion_settings.data_source_request_concurrency, 1) + self.assertEqual(updated.ingestion_settings.ingestion_retry_delay, 1) + self.assertEqual(updated.ingestion_settings.stop_retry_after, 1) + self.assertEqual(updated.options.rollup_settings.rollup_type, "AlreadyRollup") + self.assertEqual(updated.options.rollup_settings.rollup_method, "Sum") + self.assertEqual(updated.options.rollup_settings.rollup_identification_value, "sumrollup") + self.assertEqual(updated.options.rollup_settings.auto_rollup_group_by_column_names, []) + self.assertEqual(updated.options.missing_data_point_fill_settings.fill_type, "CustomValue") + self.assertEqual(updated.options.missing_data_point_fill_settings.custom_fill_value, 2) + self.assertEqual(updated.options.access_mode, "Public") + self.assertEqual(updated.options.viewers, ["updated"]) + self.assertEqual(updated.status, "Paused") + self.assertEqual(updated.options.action_link_template, "updated") + self.assertEqual(updated.source.connection_string, "updated") + self.assertEqual(updated.source.query, "get data") + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_data_feed_by_reseting_properties(self): + async with self.admin_client: + data_feed = await self._create_data_feed_for_update("update") + try: + updated = await self.admin_client.update_data_feed( + data_feed.id, + name="update", + data_feed_description=None, + timestamp_column=None, + ingestion_start_offset=None, + data_source_request_concurrency=None, + ingestion_retry_delay=None, + stop_retry_after=None, + rollup_type=None, + rollup_method=None, + rollup_identification_value=None, + auto_rollup_group_by_column_names=None, + fill_type=None, + custom_fill_value=None, + access_mode=None, + viewers=None, + status=None, + action_link_template=None, + ) + self.assertEqual(updated.name, "update") + # self.assertEqual(updated.options.data_feed_description, "") # doesn't currently clear + # self.assertEqual(updated.schema.timestamp_column, "") # doesn't currently clear + self.assertEqual(updated.ingestion_settings.ingestion_begin_time, + datetime.datetime(2019, 10, 1, tzinfo=tzutc())) + self.assertEqual(updated.ingestion_settings.ingestion_start_offset, -1) + self.assertEqual(updated.ingestion_settings.data_source_request_concurrency, 0) + self.assertEqual(updated.ingestion_settings.ingestion_retry_delay, -1) + self.assertEqual(updated.ingestion_settings.stop_retry_after, -1) + self.assertEqual(updated.options.rollup_settings.rollup_type, "NoRollup") + self.assertEqual(updated.options.rollup_settings.rollup_method, "None") + self.assertEqual(updated.options.rollup_settings.rollup_identification_value, None) + self.assertEqual(updated.options.rollup_settings.auto_rollup_group_by_column_names, []) + self.assertEqual(updated.options.missing_data_point_fill_settings.fill_type, "SmartFilling") + self.assertEqual(updated.options.missing_data_point_fill_settings.custom_fill_value, 0) + self.assertEqual(updated.options.access_mode, "Private") + # self.assertEqual(updated.options.viewers, ["viewers"]) # doesn't currently clear + self.assertEqual(updated.status, "Active") + # self.assertEqual(updated.options.action_link_template, "updated") # doesn't currently clear + + finally: + await self.admin_client.delete_data_feed(data_feed.id) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_hooks_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_hooks_async.py new file mode 100644 index 000000000000..7e44f294f6b3 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_hooks_async.py @@ -0,0 +1,279 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +import pytest +from azure.core.exceptions import ResourceNotFoundError + +from azure.ai.metricsadvisor.models import ( + EmailHook, + WebHook, +) +from base_testcase_async import TestMetricsAdvisorAdministrationClientBaseAsync + + +class TestMetricsAdvisorAdministrationClientAsync(TestMetricsAdvisorAdministrationClientBaseAsync): + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_email_hook(self): + email_hook_name = self.create_random_name("testemailhookasync") + async with self.admin_client: + try: + email_hook = await self.admin_client.create_hook( + name=email_hook_name, + hook=EmailHook( + emails_to_alert=["yournamehere@microsoft.com"], + description="my email hook", + external_link="external link" + ) + ) + self.assertIsNotNone(email_hook.id) + self.assertIsNotNone(email_hook.name) + self.assertIsNotNone(email_hook.admins) + self.assertEqual(email_hook.emails_to_alert, ["yournamehere@microsoft.com"]) + self.assertEqual(email_hook.description, "my email hook") + self.assertEqual(email_hook.external_link, "external link") + self.assertEqual(email_hook.hook_type, "Email") + finally: + await self.admin_client.delete_hook(email_hook.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_hook(email_hook.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_web_hook(self): + web_hook_name = self.create_random_name("testwebhookasync") + async with self.admin_client: + try: + web_hook = await self.admin_client.create_hook( + name=web_hook_name, + hook=WebHook( + endpoint="https://httpbin.org/post", + description="my web hook", + external_link="external link" + ) + ) + self.assertIsNotNone(web_hook.id) + self.assertIsNotNone(web_hook.name) + self.assertIsNotNone(web_hook.admins) + self.assertEqual(web_hook.endpoint, "https://httpbin.org/post") + self.assertEqual(web_hook.description, "my web hook") + self.assertEqual(web_hook.external_link, "external link") + self.assertEqual(web_hook.hook_type, "Webhook") + finally: + await self.admin_client.delete_hook(web_hook.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_hook(web_hook.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_list_hooks(self): + async with self.admin_client: + hooks = self.admin_client.list_hooks() + hooks_list = [] + async for hook in hooks: + hooks_list.append(hook) + assert len(hooks_list) > 0 + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_email_hook_with_model(self): + name = self.create_random_name("testwebhook") + async with self.admin_client: + try: + hook = await self._create_email_hook_for_update(name) + hook.name = "update" + hook.description = "update" + hook.external_link = "update" + hook.emails_to_alert = ["myemail@m.com"] + + updated = await self.admin_client.update_hook(hook) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "update") + self.assertEqual(updated.external_link, "update") + self.assertEqual(updated.emails_to_alert, ["myemail@m.com"]) + + finally: + await self.admin_client.delete_hook(hook.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_email_hook_with_kwargs(self): + name = self.create_random_name("testhook") + async with self.admin_client: + try: + hook = await self._create_email_hook_for_update(name) + updated = await self.admin_client.update_hook( + hook.id, + hook_type="Email", + name="update", + description="update", + external_link="update", + emails_to_alert=["myemail@m.com"] + ) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "update") + self.assertEqual(updated.external_link, "update") + self.assertEqual(updated.emails_to_alert, ["myemail@m.com"]) + + finally: + await self.admin_client.delete_hook(hook.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_email_hook_with_model_and_kwargs(self): + name = self.create_random_name("testhook") + async with self.admin_client: + try: + hook = await self._create_email_hook_for_update(name) + + hook.name = "don't update me" + hook.description = "don't update me" + hook.emails_to_alert = [] + updated = await self.admin_client.update_hook( + hook, + hook_type="Email", + name="update", + description="update", + external_link="update", + emails_to_alert=["myemail@m.com"] + ) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "update") + self.assertEqual(updated.external_link, "update") + self.assertEqual(updated.emails_to_alert, ["myemail@m.com"]) + + finally: + await self.admin_client.delete_hook(hook.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_email_hook_by_resetting_properties(self): + name = self.create_random_name("testhook") + async with self.admin_client: + try: + hook = await self._create_email_hook_for_update(name) + updated = await self.admin_client.update_hook( + hook.id, + hook_type="Email", + name="reset", + description=None, + external_link=None, + ) + + self.assertEqual(updated.name, "reset") + + # sending null, but not clearing properties + # self.assertEqual(updated.description, "") + # self.assertEqual(updated.external_link, "") + + finally: + await self.admin_client.delete_hook(hook.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_web_hook_with_model(self): + name = self.create_random_name("testwebhook") + async with self.admin_client: + try: + hook = await self._create_web_hook_for_update(name) + hook.name = "update" + hook.description = "update" + hook.external_link = "update" + hook.username = "myusername" + hook.password = "password" + + updated = await self.admin_client.update_hook(hook) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "update") + self.assertEqual(updated.external_link, "update") + self.assertEqual(updated.username, "myusername") + self.assertEqual(updated.password, "password") + + finally: + await self.admin_client.delete_hook(hook.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_web_hook_with_kwargs(self): + name = self.create_random_name("testwebhook") + async with self.admin_client: + try: + hook = await self._create_web_hook_for_update(name) + updated = await self.admin_client.update_hook( + hook.id, + hook_type="Web", + endpoint="https://httpbin.org/post", + name="update", + description="update", + external_link="update", + username="myusername", + password="password" + ) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "update") + self.assertEqual(updated.external_link, "update") + self.assertEqual(updated.username, "myusername") + self.assertEqual(updated.password, "password") + + finally: + await self.admin_client.delete_hook(hook.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_web_hook_with_model_and_kwargs(self): + name = self.create_random_name("testwebhook") + async with self.admin_client: + try: + hook = await self._create_web_hook_for_update(name) + + hook.name = "don't update me" + hook.description = "updateMe" + hook.username = "don't update me" + hook.password = "don't update me" + hook.endpoint = "don't update me" + updated = await self.admin_client.update_hook( + hook, + hook_type="Web", + endpoint="https://httpbin.org/post", + name="update", + external_link="update", + username="myusername", + password="password" + ) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "updateMe") + self.assertEqual(updated.external_link, "update") + self.assertEqual(updated.username, "myusername") + self.assertEqual(updated.password, "password") + + finally: + await self.admin_client.delete_hook(hook.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_web_hook_by_resetting_properties(self): + name = self.create_random_name("testhook") + async with self.admin_client: + try: + hook = await self._create_web_hook_for_update(name) + updated = await self.admin_client.update_hook( + hook.id, + hook_type="Web", + name="reset", + description=None, + endpoint="https://httpbin.org/post", + external_link=None, + username="myusername", + password=None + ) + + self.assertEqual(updated.name, "reset") + self.assertEqual(updated.password, "") + + # sending null, but not clearing properties + # self.assertEqual(updated.description, "") + # self.assertEqual(updated.external_link, "") + + finally: + await self.admin_client.delete_hook(hook.id) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_metric_anomaly_detection_config_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_metric_anomaly_detection_config_async.py new file mode 100644 index 000000000000..a9cf1a0eb22a --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_metric_anomaly_detection_config_async.py @@ -0,0 +1,824 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +import pytest +from azure.core.exceptions import ResourceNotFoundError + +from azure.ai.metricsadvisor.models import ( + MetricDetectionCondition, + MetricSeriesGroupDetectionCondition, + MetricSingleSeriesDetectionCondition, + SmartDetectionCondition, + SuppressCondition, + ChangeThresholdCondition, + HardThresholdCondition, +) +from base_testcase_async import TestMetricsAdvisorAdministrationClientBaseAsync + + +class TestMetricsAdvisorAdministrationClientAsync(TestMetricsAdvisorAdministrationClientBaseAsync): + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_metric_anomaly_detection_configuration_whole_series_detection(self): + + data_feed = await self._create_data_feed("adconfigasync") + async with self.admin_client: + try: + detection_config_name = self.create_random_name("testdetectionconfigasync") + config = await self.admin_client.create_metric_anomaly_detection_configuration( + name=detection_config_name, + metric_id=data_feed.metric_ids[0], + description="My test metric anomaly detection configuration", + whole_series_detection_condition=MetricDetectionCondition( + cross_conditions_operator="OR", + smart_detection_condition=SmartDetectionCondition( + sensitivity=50, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=50, + min_ratio=50 + ) + ), + hard_threshold_condition=HardThresholdCondition( + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=5 + ), + lower_bound=0, + upper_bound=100 + ), + change_threshold_condition=ChangeThresholdCondition( + change_percentage=50, + shift_point=30, + within_range=True, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + ) + ) + self.assertIsNotNone(config.id) + self.assertEqual(config.metric_id, data_feed.metric_ids[0]) + self.assertEqual(config.description, "My test metric anomaly detection configuration") + self.assertIsNotNone(config.name) + self.assertIsNone(config.series_detection_conditions) + self.assertIsNone(config.series_group_detection_conditions) + self.assertEqual(config.whole_series_detection_condition.cross_conditions_operator, "OR") + self.assertEqual( + config.whole_series_detection_condition.change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(config.whole_series_detection_condition.change_threshold_condition.change_percentage, 50) + self.assertEqual(config.whole_series_detection_condition.change_threshold_condition.shift_point, 30) + self.assertTrue(config.whole_series_detection_condition.change_threshold_condition.within_range) + self.assertEqual( + config.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_number, 2) + self.assertEqual( + config.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual( + config.whole_series_detection_condition.hard_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(config.whole_series_detection_condition.hard_threshold_condition.lower_bound, 0) + self.assertEqual(config.whole_series_detection_condition.hard_threshold_condition.upper_bound, 100) + self.assertEqual( + config.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual( + config.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_ratio, 5) + self.assertEqual( + config.whole_series_detection_condition.smart_detection_condition.anomaly_detector_direction, "Both") + self.assertEqual(config.whole_series_detection_condition.smart_detection_condition.sensitivity, 50) + self.assertEqual( + config.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_number, 50) + self.assertEqual( + config.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_ratio, 50) + + await self.admin_client.delete_metric_anomaly_detection_configuration(config.id) + + with self.assertRaises(ResourceNotFoundError): + await self.admin_client.get_metric_anomaly_detection_configuration(config.id) + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_metric_anomaly_detection_config_with_series_and_group_conditions(self): + data_feed = await self._create_data_feed("adconfiggetasync") + async with self.admin_client: + try: + detection_config_name = self.create_random_name("testdetectionconfigetasync") + detection_config = await self.admin_client.create_metric_anomaly_detection_configuration( + name=detection_config_name, + metric_id=data_feed.metric_ids[0], + description="My test metric anomaly detection configuration", + whole_series_detection_condition=MetricDetectionCondition( + cross_conditions_operator="AND", + smart_detection_condition=SmartDetectionCondition( + sensitivity=50, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=50, + min_ratio=50 + ) + ), + hard_threshold_condition=HardThresholdCondition( + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=5 + ), + lower_bound=0, + upper_bound=100 + ), + change_threshold_condition=ChangeThresholdCondition( + change_percentage=50, + shift_point=30, + within_range=True, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + ), + series_detection_conditions=[MetricSingleSeriesDetectionCondition( + series_key={"city": "Shenzhen", "category": "Jewelry"}, + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ) + )], + series_group_detection_conditions=[MetricSeriesGroupDetectionCondition( + series_group_key={"city": "Sao Paulo"}, + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ) + )] + ) + + self.assertIsNotNone(detection_config.id) + self.assertEqual(detection_config.metric_id, data_feed.metric_ids[0]) + self.assertEqual(detection_config.description, "My test metric anomaly detection configuration") + self.assertIsNotNone(detection_config.name) + self.assertEqual(detection_config.whole_series_detection_condition.cross_conditions_operator, "AND") + self.assertEqual( + detection_config.whole_series_detection_condition.change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.whole_series_detection_condition.change_threshold_condition.change_percentage, 50) + self.assertEqual(detection_config.whole_series_detection_condition.change_threshold_condition.shift_point, 30) + self.assertTrue(detection_config.whole_series_detection_condition.change_threshold_condition.within_range) + self.assertEqual( + detection_config.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_number, 2) + self.assertEqual( + detection_config.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual( + detection_config.whole_series_detection_condition.hard_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.whole_series_detection_condition.hard_threshold_condition.lower_bound, 0) + self.assertEqual(detection_config.whole_series_detection_condition.hard_threshold_condition.upper_bound, 100) + self.assertEqual( + detection_config.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual( + detection_config.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_ratio, 5) + self.assertEqual( + detection_config.whole_series_detection_condition.smart_detection_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.whole_series_detection_condition.smart_detection_condition.sensitivity, 50) + self.assertEqual( + detection_config.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_number, 50) + self.assertEqual( + detection_config.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_ratio, 50) + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 100) + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 1) + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.sensitivity, 63) + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Both") + self.assertEqual( + detection_config.series_detection_conditions[0].series_key, {'city': 'Shenzhen', 'category': 'Jewelry'}) + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 100) + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 1) + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.sensitivity, 63) + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Both") + self.assertEqual( + detection_config.series_group_detection_conditions[0].series_group_key, {'city': 'Sao Paulo'}) + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_create_detection_config_with_multiple_series_and_group_conditions(self): + data_feed = await self._create_data_feed("datafeedforconfigasync") + async with self.admin_client: + try: + detection_config_name = self.create_random_name("multipledetectionconfigsasync") + detection_config = await self.admin_client.create_metric_anomaly_detection_configuration( + name=detection_config_name, + metric_id=data_feed.metric_ids[0], + description="My test metric anomaly detection configuration", + whole_series_detection_condition=MetricDetectionCondition( + cross_conditions_operator="AND", + smart_detection_condition=SmartDetectionCondition( + sensitivity=50, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=50, + min_ratio=50 + ) + ), + hard_threshold_condition=HardThresholdCondition( + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=5 + ), + lower_bound=0, + upper_bound=100 + ), + change_threshold_condition=ChangeThresholdCondition( + change_percentage=50, + shift_point=30, + within_range=True, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + ), + series_detection_conditions=[ + MetricSingleSeriesDetectionCondition( + series_key={"city": "Shenzhen", "category": "Jewelry"}, + cross_conditions_operator="AND", + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ), + hard_threshold_condition=HardThresholdCondition( + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=5 + ), + lower_bound=0, + upper_bound=100 + ), + change_threshold_condition=ChangeThresholdCondition( + change_percentage=50, + shift_point=30, + within_range=True, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + ), + MetricSingleSeriesDetectionCondition( + series_key={"city": "Osaka", "category": "Cell Phones"}, + cross_conditions_operator="AND", + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ) + ) + ], + series_group_detection_conditions=[ + MetricSeriesGroupDetectionCondition( + series_group_key={"city": "Sao Paulo"}, + cross_conditions_operator="AND", + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ), + hard_threshold_condition=HardThresholdCondition( + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=5 + ), + lower_bound=0, + upper_bound=100 + ), + change_threshold_condition=ChangeThresholdCondition( + change_percentage=50, + shift_point=30, + within_range=True, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + ), + MetricSeriesGroupDetectionCondition( + series_group_key={"city": "Seoul"}, + cross_conditions_operator="AND", + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ) + ) + ] + ) + + self.assertIsNotNone(detection_config.id) + self.assertEqual(detection_config.metric_id, data_feed.metric_ids[0]) + self.assertEqual(detection_config.description, "My test metric anomaly detection configuration") + self.assertIsNotNone(detection_config.name) + + # whole series detection condition + self.assertEqual(detection_config.whole_series_detection_condition.cross_conditions_operator, "AND") + self.assertEqual( + detection_config.whole_series_detection_condition.change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.whole_series_detection_condition.change_threshold_condition.change_percentage, 50) + self.assertEqual(detection_config.whole_series_detection_condition.change_threshold_condition.shift_point, 30) + self.assertTrue(detection_config.whole_series_detection_condition.change_threshold_condition.within_range) + self.assertEqual( + detection_config.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_number, 2) + self.assertEqual( + detection_config.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual( + detection_config.whole_series_detection_condition.hard_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.whole_series_detection_condition.hard_threshold_condition.lower_bound, 0) + self.assertEqual(detection_config.whole_series_detection_condition.hard_threshold_condition.upper_bound, 100) + self.assertEqual( + detection_config.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual( + detection_config.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_ratio, 5) + self.assertEqual( + detection_config.whole_series_detection_condition.smart_detection_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.whole_series_detection_condition.smart_detection_condition.sensitivity, 50) + self.assertEqual( + detection_config.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_number, 50) + self.assertEqual( + detection_config.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_ratio, 50) + + # series detection conditions + self.assertEqual( + detection_config.series_detection_conditions[0].series_key, {'city': 'Shenzhen', 'category': 'Jewelry'}) + self.assertEqual(detection_config.series_detection_conditions[0].cross_conditions_operator, "AND") + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 100) + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 1) + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.sensitivity, 63) + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Both") + self.assertEqual( + detection_config.series_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.series_detection_conditions[0].change_threshold_condition.change_percentage, 50) + self.assertEqual(detection_config.series_detection_conditions[0].change_threshold_condition.shift_point, 30) + self.assertTrue(detection_config.series_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual( + detection_config.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 2) + self.assertEqual( + detection_config.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual( + detection_config.series_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.series_detection_conditions[0].hard_threshold_condition.lower_bound, 0) + self.assertEqual(detection_config.series_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual( + detection_config.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual( + detection_config.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 5) + self.assertEqual( + detection_config.series_detection_conditions[1].series_key, {"city": "Osaka", "category": "Cell Phones"}) + self.assertEqual( + detection_config.series_detection_conditions[1].smart_detection_condition.suppress_condition.min_ratio, 100) + self.assertEqual( + detection_config.series_detection_conditions[1].smart_detection_condition.suppress_condition.min_number, 1) + self.assertEqual( + detection_config.series_detection_conditions[1].smart_detection_condition.sensitivity, 63) + self.assertEqual( + detection_config.series_detection_conditions[1].smart_detection_condition.anomaly_detector_direction, "Both") + + # series group detection conditions + self.assertEqual( + detection_config.series_group_detection_conditions[0].series_group_key, {"city": "Sao Paulo"}) + self.assertEqual(detection_config.series_group_detection_conditions[0].cross_conditions_operator, "AND") + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 100) + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 1) + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.sensitivity, 63) + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Both") + self.assertEqual( + detection_config.series_group_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.series_group_detection_conditions[0].change_threshold_condition.change_percentage, 50) + self.assertEqual(detection_config.series_group_detection_conditions[0].change_threshold_condition.shift_point, 30) + self.assertTrue(detection_config.series_group_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual( + detection_config.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 2) + self.assertEqual( + detection_config.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual( + detection_config.series_group_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.series_group_detection_conditions[0].hard_threshold_condition.lower_bound, 0) + self.assertEqual(detection_config.series_group_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual( + detection_config.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual( + detection_config.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 5) + self.assertEqual( + detection_config.series_group_detection_conditions[1].series_group_key, {"city": "Seoul"}) + self.assertEqual( + detection_config.series_group_detection_conditions[1].smart_detection_condition.suppress_condition.min_ratio, 100) + self.assertEqual( + detection_config.series_group_detection_conditions[1].smart_detection_condition.suppress_condition.min_number, 1) + self.assertEqual( + detection_config.series_group_detection_conditions[1].smart_detection_condition.sensitivity, 63) + self.assertEqual( + detection_config.series_group_detection_conditions[1].smart_detection_condition.anomaly_detector_direction, "Both") + + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_list_metric_anomaly_detection_configs(self): + async with self.admin_client: + configs = self.admin_client.list_metric_anomaly_detection_configurations(metric_id=self.metric_id) + configs_list = [] + async for config in configs: + configs_list.append(config) + assert len(configs_list) > 0 + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_detection_config_with_model(self): + async with self.admin_client: + try: + detection_config, data_feed = await self._create_detection_config_for_update("updatedetection") + + detection_config.name = "updated" + detection_config.description = "updated" + change_threshold_condition = ChangeThresholdCondition( + anomaly_detector_direction="Both", + change_percentage=20, + shift_point=10, + within_range=True, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + hard_threshold_condition = HardThresholdCondition( + anomaly_detector_direction="Up", + upper_bound=100, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + smart_detection_condition = SmartDetectionCondition( + anomaly_detector_direction="Up", + sensitivity=10, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + detection_config.series_detection_conditions[0].change_threshold_condition = change_threshold_condition + detection_config.series_detection_conditions[0].hard_threshold_condition = hard_threshold_condition + detection_config.series_detection_conditions[0].smart_detection_condition = smart_detection_condition + detection_config.series_detection_conditions[0].cross_conditions_operator = "AND" + detection_config.series_group_detection_conditions[0].change_threshold_condition = change_threshold_condition + detection_config.series_group_detection_conditions[0].hard_threshold_condition = hard_threshold_condition + detection_config.series_group_detection_conditions[0].smart_detection_condition = smart_detection_condition + detection_config.series_group_detection_conditions[0].cross_conditions_operator = "AND" + detection_config.whole_series_detection_condition.hard_threshold_condition = hard_threshold_condition + detection_config.whole_series_detection_condition.smart_detection_condition = smart_detection_condition + detection_config.whole_series_detection_condition.change_threshold_condition = change_threshold_condition + detection_config.whole_series_detection_condition.cross_conditions_operator = "OR" + + updated = await self.admin_client.update_metric_anomaly_detection_configuration(detection_config) + + self.assertEqual(updated.name, "updated") + self.assertEqual(updated.description, "updated") + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.shift_point, 10) + self.assertTrue(updated.series_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].cross_conditions_operator, "AND") + + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.shift_point, 10) + self.assertTrue(updated.series_group_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].cross_conditions_operator, "AND") + + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.shift_point, 10) + self.assertTrue(updated.whole_series_detection_condition.change_threshold_condition.within_range) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.cross_conditions_operator, "OR") + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_detection_config_with_kwargs(self): + async with self.admin_client: + try: + detection_config, data_feed = await self._create_detection_config_for_update("updatedetection") + change_threshold_condition = ChangeThresholdCondition( + anomaly_detector_direction="Both", + change_percentage=20, + shift_point=10, + within_range=True, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + hard_threshold_condition = HardThresholdCondition( + anomaly_detector_direction="Up", + upper_bound=100, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + smart_detection_condition = SmartDetectionCondition( + anomaly_detector_direction="Up", + sensitivity=10, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + updated = await self.admin_client.update_metric_anomaly_detection_configuration( + detection_config.id, + name="updated", + description="updated", + whole_series_detection_condition=MetricDetectionCondition( + cross_conditions_operator="OR", + smart_detection_condition=smart_detection_condition, + hard_threshold_condition=hard_threshold_condition, + change_threshold_condition=change_threshold_condition + ), + series_detection_conditions=[MetricSingleSeriesDetectionCondition( + series_key={"city": "San Paulo", "category": "Jewelry"}, + cross_conditions_operator="AND", + smart_detection_condition=smart_detection_condition, + hard_threshold_condition=hard_threshold_condition, + change_threshold_condition=change_threshold_condition + )], + series_group_detection_conditions=[MetricSeriesGroupDetectionCondition( + series_group_key={"city": "Shenzen"}, + cross_conditions_operator="AND", + smart_detection_condition=smart_detection_condition, + hard_threshold_condition=hard_threshold_condition, + change_threshold_condition=change_threshold_condition + )] + ) + + self.assertEqual(updated.name, "updated") + self.assertEqual(updated.description, "updated") + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.shift_point, 10) + self.assertTrue(updated.series_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].cross_conditions_operator, "AND") + self.assertEqual(updated.series_detection_conditions[0].series_key, {"city": "San Paulo", "category": "Jewelry"}) + + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.shift_point, 10) + self.assertTrue(updated.series_group_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].cross_conditions_operator, "AND") + self.assertEqual(updated.series_group_detection_conditions[0].series_group_key, {"city": "Shenzen"}) + + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.shift_point, 10) + self.assertTrue(updated.whole_series_detection_condition.change_threshold_condition.within_range) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.cross_conditions_operator, "OR") + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_detection_config_with_model_and_kwargs(self): + async with self.admin_client: + try: + detection_config, data_feed = await self._create_detection_config_for_update("updatedetection") + change_threshold_condition = ChangeThresholdCondition( + anomaly_detector_direction="Both", + change_percentage=20, + shift_point=10, + within_range=True, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + hard_threshold_condition = HardThresholdCondition( + anomaly_detector_direction="Up", + upper_bound=100, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + smart_detection_condition = SmartDetectionCondition( + anomaly_detector_direction="Up", + sensitivity=10, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + + detection_config.name = "updateMe" + detection_config.description = "updateMe" + updated = await self.admin_client.update_metric_anomaly_detection_configuration( + detection_config, + whole_series_detection_condition=MetricDetectionCondition( + cross_conditions_operator="OR", + smart_detection_condition=smart_detection_condition, + hard_threshold_condition=hard_threshold_condition, + change_threshold_condition=change_threshold_condition + ), + series_detection_conditions=[MetricSingleSeriesDetectionCondition( + series_key={"city": "San Paulo", "category": "Jewelry"}, + cross_conditions_operator="AND", + smart_detection_condition=smart_detection_condition, + hard_threshold_condition=hard_threshold_condition, + change_threshold_condition=change_threshold_condition + )], + series_group_detection_conditions=[MetricSeriesGroupDetectionCondition( + series_group_key={"city": "Shenzen"}, + cross_conditions_operator="AND", + smart_detection_condition=smart_detection_condition, + hard_threshold_condition=hard_threshold_condition, + change_threshold_condition=change_threshold_condition + )] + ) + + self.assertEqual(updated.name, "updateMe") + self.assertEqual(updated.description, "updateMe") + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.shift_point, 10) + self.assertTrue(updated.series_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].cross_conditions_operator, "AND") + self.assertEqual(updated.series_detection_conditions[0].series_key, {"city": "San Paulo", "category": "Jewelry"}) + + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.shift_point, 10) + self.assertTrue(updated.series_group_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].cross_conditions_operator, "AND") + self.assertEqual(updated.series_group_detection_conditions[0].series_group_key, {"city": "Shenzen"}) + + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.shift_point, 10) + self.assertTrue(updated.whole_series_detection_condition.change_threshold_condition.within_range) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.cross_conditions_operator, "OR") + finally: + await self.admin_client.delete_data_feed(data_feed.id) + + @TestMetricsAdvisorAdministrationClientBaseAsync.await_prepared_test + async def test_update_detection_config_by_resetting_properties(self): + async with self.admin_client: + try: + detection_config, data_feed = await self._create_detection_config_for_update("updatedetection") + + updated = await self.admin_client.update_metric_anomaly_detection_configuration( + detection_config.id, + name="reset", + description="", + # series_detection_conditions=None, + # series_group_detection_conditions=None + ) + + self.assertEqual(updated.name, "reset") + self.assertEqual(updated.description, "") # currently won't update with None + + # service bug says these are required + # self.assertEqual(updated.series_detection_conditions, None) + # self.assertEqual(updated.series_group_detection_conditions, None) + + finally: + await self.admin_client.delete_data_feed(data_feed.id) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_metrics_advisor_client_live_async.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_metrics_advisor_client_live_async.py new file mode 100644 index 000000000000..f0e079d2f650 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/async_tests/test_metrics_advisor_client_live_async.py @@ -0,0 +1,236 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +import asyncio +import functools +from azure.core import MatchConditions +from devtools_testutils import AzureMgmtTestCase, ResourceGroupPreparer +import pytest +import datetime +from azure.ai.metricsadvisor.models import ( + AnomalyFeedback, + ChangePointFeedback, + CommentFeedback, + PeriodFeedback, +) +import os +from azure_devtools.scenario_tests.utilities import trim_kwargs_from_test_function +from base_testcase_async import TestMetricsAdvisorClientBaseAsync + +class TestMetricsAdvisorClientAsync(TestMetricsAdvisorClientBaseAsync): + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_list_anomalies_for_detection_configuration(self): + async with self.client: + results = self.client.list_anomalies_for_detection_configuration( + detection_configuration_id=self.anomaly_detection_configuration_id, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + ) + tolist = [] + async for result in results: + tolist.append(result) + assert len(tolist) > 0 + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_list_dimension_values_for_detection_configuration(self): + async with self.client: + results = self.client.list_dimension_values_for_detection_configuration( + detection_configuration_id=self.anomaly_detection_configuration_id, + dimension_name=self.dimension_name, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + ) + tolist = [] + async for result in results: + tolist.append(result) + assert len(tolist) > 0 + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_list_incidents_for_detection_configuration(self): + async with self.client: + results = self.client.list_incidents_for_detection_configuration( + detection_configuration_id=self.anomaly_detection_configuration_id, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + ) + tolist = [] + async for result in results: + tolist.append(result) + assert len(tolist) > 0 + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_list_metric_dimension_values(self): + async with self.client: + results = self.client.list_metric_dimension_values( + metric_id=self.metric_id, + dimension_name=self.dimension_name, + ) + tolist = [] + async for result in results: + tolist.append(result) + assert len(tolist) > 0 + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_list_incident_root_cause(self): + async with self.client: + results = self.client.list_incident_root_causes( + detection_configuration_id=self.anomaly_detection_configuration_id, + incident_id=self.incident_id, + ) + tolist = [] + async for result in results: + tolist.append(result) + assert len(tolist) == 0 + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_list_metric_enriched_series_data(self): + async with self.client: + series_identity = {"city":"city"} + results = self.client.list_metric_enriched_series_data( + detection_configuration_id=self.anomaly_detection_configuration_id, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + series=[series_identity] + ) + tolist = [] + async for result in results: + tolist.append(result) + assert len(tolist) > 0 + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_list_metric_enrichment_status(self): + async with self.client: + results = self.client.list_metric_enrichment_status( + metric_id=self.metric_id, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + ) + tolist = [] + async for result in results: + tolist.append(result) + assert len(tolist) > 0 + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_list_alerts_for_alert_configuration(self): + async with self.client: + results = self.client.list_alerts_for_alert_configuration( + alert_configuration_id=self.anomaly_alert_configuration_id, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + time_mode="AnomalyTime", + ) + tolist = [] + async for result in results: + tolist.append(result) + assert len(tolist) > 0 + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_list_metrics_series_data(self): + async with self.client: + results = self.client.list_metrics_series_data( + metric_id=self.metric_id, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + filter=[ + {"city": "Mumbai", "category": "Shoes Handbags & Sunglasses"} + ] + ) + tolist = [] + async for result in results: + tolist.append(result) + assert len(tolist) > 0 + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_list_metric_series_definitions(self): + async with self.client: + results = self.client.list_metric_series_definitions( + metric_id=self.metric_id, + active_since=datetime.datetime(2020, 1, 1), + ) + tolist = [] + async for result in results: + tolist.append(result) + assert len(tolist) > 0 + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_add_anomaly_feedback(self): + anomaly_feedback = AnomalyFeedback(metric_id=self.metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + value="NotAnomaly") + async with self.client: + await self.client.add_feedback(anomaly_feedback) + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_add_change_point_feedback(self): + change_point_feedback = ChangePointFeedback(metric_id=self.metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + value="NotChangePoint") + async with self.client: + await self.client.add_feedback(change_point_feedback) + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_add_comment_feedback(self): + comment_feedback = CommentFeedback(metric_id=self.metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + value="comment") + async with self.client: + await self.client.add_feedback(comment_feedback) + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_add_period_feedback(self): + period_feedback = PeriodFeedback(metric_id=self.metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + period_type="AssignValue", + value=2) + async with self.client: + await self.client.add_feedback(period_feedback) + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_list_feedbacks(self): + async with self.client: + results = self.client.list_feedbacks(metric_id=self.metric_id) + tolist = [] + async for result in results: + tolist.append(result) + assert len(tolist) > 0 + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_get_feedback(self): + async with self.client: + result = await self.client.get_feedback(feedback_id=self.feedback_id) + assert result + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_list_anomalies_for_alert(self): + async with self.client: + results = self.client.list_anomalies_for_alert( + alert_configuration_id=self.anomaly_alert_configuration_id, + alert_id=self.alert_id, + ) + tolist = [] + async for result in results: + tolist.append(result) + assert len(tolist) > 0 + + @TestMetricsAdvisorClientBaseAsync.await_prepared_test + async def test_list_incidents_for_alert(self): + async with self.client: + results = self.client.list_incidents_for_alert( + alert_configuration_id=self.anomaly_alert_configuration_id, + alert_id=self.alert_id, + ) + tolist = [] + async for result in results: + tolist.append(result) + assert len(tolist) > 0 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/base_testcase.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/base_testcase.py new file mode 100644 index 000000000000..b2f98b3f88c0 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/base_testcase.py @@ -0,0 +1,461 @@ +# coding=utf-8 +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +import datetime +from devtools_testutils import AzureTestCase +from azure_devtools.scenario_tests import ( + ReplayableTest +) + +from azure.ai.metricsadvisor import ( + MetricsAdvisorKeyCredential, + MetricsAdvisorAdministrationClient, + MetricsAdvisorClient, +) +from azure.ai.metricsadvisor.models import ( + SQLServerDataFeed, + DataFeedSchema, + Metric, + Dimension, + DataFeedGranularity, + DataFeedIngestionSettings, + DataFeedMissingDataPointFillSettings, + DataFeedRollupSettings, + DataFeedOptions, + MetricAlertConfiguration, + MetricAnomalyAlertScope, + MetricAnomalyAlertConditions, + MetricBoundaryCondition, + TopNGroupScope, + SeverityCondition, + MetricDetectionCondition, + MetricSeriesGroupDetectionCondition, + MetricSingleSeriesDetectionCondition, + SmartDetectionCondition, + SuppressCondition, + ChangeThresholdCondition, + HardThresholdCondition, + EmailHook, + WebHook +) + + +class TestMetricsAdvisorAdministrationClientBase(AzureTestCase): + FILTER_HEADERS = ReplayableTest.FILTER_HEADERS + ['Ocp-Apim-Subscription-Key', 'x-api-key'] + + def __init__(self, method_name): + super(TestMetricsAdvisorAdministrationClientBase, self).__init__(method_name) + self.vcr.match_on = ["path", "method", "query"] + if self.is_live: + service_endpoint = self.get_settings_value("METRICS_ADVISOR_ENDPOINT") + subscription_key = self.get_settings_value("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = self.get_settings_value("METRICS_ADVISOR_API_KEY") + self.sql_server_connection_string = self.get_settings_value("METRICS_ADVISOR_SQL_SERVER_CONNECTION_STRING") + self.azure_table_connection_string = self.get_settings_value("METRICS_ADVISOR_AZURE_TABLE_CONNECTION_STRING") + self.azure_blob_connection_string = self.get_settings_value("METRICS_ADVISOR_AZURE_BLOB_CONNECTION_STRING") + self.azure_cosmosdb_connection_string = self.get_settings_value("METRICS_ADVISOR_COSMOS_DB_CONNECTION_STRING") + self.http_request_get_url = self.get_settings_value("METRICS_ADVISOR_HTTP_GET_URL") + self.http_request_post_url = self.get_settings_value("METRICS_ADVISOR_HTTP_POST_URL") + self.application_insights_api_key = self.get_settings_value("METRICS_ADVISOR_APPLICATION_INSIGHTS_API_KEY") + self.azure_data_explorer_connection_string = self.get_settings_value("METRICS_ADVISOR_AZURE_DATA_EXPLORER_CONNECTION_STRING") + self.influxdb_connection_string = self.get_settings_value("METRICS_ADVISOR_INFLUXDB_CONNECTION_STRING") + self.influxdb_password = self.get_settings_value("METRICS_ADVISOR_INFLUXDB_PASSWORD") + self.azure_datalake_account_key = self.get_settings_value("METRICS_ADVISOR_AZURE_DATALAKE_ACCOUNT_KEY") + self.mongodb_connection_string = self.get_settings_value("METRICS_ADVISOR_AZURE_MONGODB_CONNECTION_STRING") + self.mysql_connection_string = self.get_settings_value("METRICS_ADVISOR_MYSQL_CONNECTION_STRING") + self.postgresql_connection_string = self.get_settings_value("METRICS_ADVISOR_POSTGRESQL_CONNECTION_STRING") + self.elasticsearch_auth_header = self.get_settings_value("METRICS_ADVISOR_ELASTICSEARCH_AUTH") + self.anomaly_detection_configuration_id = self.get_settings_value("ANOMALY_DETECTION_CONFIGURATION_ID") + self.data_feed_id = self.get_settings_value("METRICS_ADVISOR_DATA_FEED_ID") + self.metric_id = self.get_settings_value("METRICS_ADVISOR_METRIC_ID") + self.scrubber.register_name_pair( + self.sql_server_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.azure_table_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.azure_blob_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.azure_cosmosdb_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.http_request_get_url, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.http_request_post_url, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.application_insights_api_key, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.azure_data_explorer_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.influxdb_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.influxdb_password, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.azure_datalake_account_key, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.mongodb_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.mysql_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.postgresql_connection_string, + "connectionstring" + ) + self.scrubber.register_name_pair( + self.elasticsearch_auth_header, + "connectionstring" + ) + + self.scrubber.register_name_pair( + self.metric_id, + "metric_id" + ) + self.scrubber.register_name_pair( + self.data_feed_id, + "data_feed_id" + ) + self.scrubber.register_name_pair( + self.anomaly_detection_configuration_id, + "anomaly_detection_configuration_id" + ) + else: + service_endpoint = "https://endpointname.cognitiveservices.azure.com" + subscription_key = "METRICS_ADVISOR_SUBSCRIPTION_KEY" + api_key = "METRICS_ADVISOR_API_KEY" + self.sql_server_connection_string = "SQL_SERVER_CONNECTION_STRING" + self.azure_table_connection_string = "AZURE_TABLE_CONNECTION_STRING" + self.azure_blob_connection_string = "AZURE_BLOB_CONNECTION_STRING" + self.azure_cosmosdb_connection_string = "COSMOS_DB_CONNECTION_STRING" + self.http_request_get_url = "METRICS_ADVISOR_HTTP_GET_URL" + self.http_request_post_url = "METRICS_ADVISOR_HTTP_POST_URL" + self.application_insights_api_key = "METRICS_ADVISOR_APPLICATION_INSIGHTS_API_KEY" + self.azure_data_explorer_connection_string = "METRICS_ADVISOR_AZURE_DATA_EXPLORER_CONNECTION_STRING" + self.influxdb_connection_string = "METRICS_ADVISOR_INFLUXDB_CONNECTION_STRING" + self.influxdb_password = "METRICS_ADVISOR_INFLUXDB_PASSWORD" + self.azure_datalake_account_key = "METRICS_ADVISOR_AZURE_DATALAKE_ACCOUNT_KEY" + self.mongodb_connection_string = "METRICS_ADVISOR_AZURE_MONGODB_CONNECTION_STRING" + self.mysql_connection_string = "METRICS_ADVISOR_MYSQL_CONNECTION_STRING" + self.postgresql_connection_string = "METRICS_ADVISOR_POSTGRESQL_CONNECTION_STRING" + self.elasticsearch_auth_header = "METRICS_ADVISOR_ELASTICSEARCH_AUTH" + self.anomaly_detection_configuration_id = "anomaly_detection_configuration_id" + self.metric_id = "metric_id" + self.data_feed_id = "data_feed_id" + self.admin_client = MetricsAdvisorAdministrationClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + + def _create_data_feed(self, name): + name = self.create_random_name(name) + return self.admin_client.create_data_feed( + name=name, + source=SQLServerDataFeed( + connection_string=self.sql_server_connection_string, + query="select * from adsample2 where Timestamp = @StartTime" + ), + granularity="Daily", + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings="2019-10-01T00:00:00Z", + ) + + def _create_data_feed_and_anomaly_detection_config(self, name): + data_feed = self._create_data_feed(name) + detection_config_name = self.create_random_name(name) + detection_config = self.admin_client.create_metric_anomaly_detection_configuration( + name=detection_config_name, + metric_id=data_feed.metric_ids[0], + description="testing", + whole_series_detection_condition=MetricDetectionCondition( + smart_detection_condition=SmartDetectionCondition( + sensitivity=50, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=50, + min_ratio=50 + ) + ) + ) + ) + return detection_config, data_feed + + def _create_data_feed_for_update(self, name): + data_feed_name = self.create_random_name(name) + return self.admin_client.create_data_feed( + name=data_feed_name, + source=SQLServerDataFeed( + connection_string=self.sql_server_connection_string, + query=u"select * from adsample2 where Timestamp = @StartTime" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost", display_name="display cost", description="the cost"), + Metric(name="revenue", display_name="display revenue", description="the revenue") + ], + dimensions=[ + Dimension(name="category", display_name="display category"), + Dimension(name="city", display_name="display city") + ], + timestamp_column="Timestamp" + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + data_source_request_concurrency=0, + ingestion_retry_delay=-1, + ingestion_start_offset=-1, + stop_retry_after=-1, + ), + options=DataFeedOptions( + admins=["yournamehere@microsoft.com"], + data_feed_description="my first data feed", + missing_data_point_fill_settings=DataFeedMissingDataPointFillSettings( + fill_type="SmartFilling" + ), + rollup_settings=DataFeedRollupSettings( + rollup_type="NoRollup", + rollup_method="None", + ), + viewers=["viewers"], + access_mode="Private", + action_link_template="action link template" + ) + + ) + + def _create_anomaly_alert_config_for_update(self, name): + detection_config, data_feed = self._create_data_feed_and_anomaly_detection_config(name) + alert_config_name = self.create_random_name(name) + alert_config = self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + cross_metrics_operator="AND", + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + upper=5.0 + ) + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ) + ], + hook_ids=[] + ) + return alert_config, data_feed, detection_config + + def _create_detection_config_for_update(self, name): + data_feed = self._create_data_feed(name) + detection_config_name = self.create_random_name("testupdated") + detection_config = self.admin_client.create_metric_anomaly_detection_configuration( + name=detection_config_name, + metric_id=data_feed.metric_ids[0], + description="My test metric anomaly detection configuration", + whole_series_detection_condition=MetricDetectionCondition( + cross_conditions_operator="AND", + smart_detection_condition=SmartDetectionCondition( + sensitivity=50, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=50, + min_ratio=50 + ) + ), + hard_threshold_condition=HardThresholdCondition( + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=5 + ), + lower_bound=0, + upper_bound=100 + ), + change_threshold_condition=ChangeThresholdCondition( + change_percentage=50, + shift_point=30, + within_range=True, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + ), + series_detection_conditions=[MetricSingleSeriesDetectionCondition( + series_key={"city": "Shenzhen", "category": "Jewelry"}, + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ) + )], + series_group_detection_conditions=[MetricSeriesGroupDetectionCondition( + series_group_key={"city": "Sao Paulo"}, + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ) + )] + ) + return detection_config, data_feed + + def _create_email_hook_for_update(self, name): + return self.admin_client.create_hook( + name=name, + hook=EmailHook( + emails_to_alert=["yournamehere@microsoft.com"], + description="my email hook", + external_link="external link" + ) + ) + + def _create_web_hook_for_update(self, name): + return self.admin_client.create_hook( + name=name, + hook=WebHook( + endpoint="https://httpbin.org/post", + description="my web hook", + external_link="external link", + username="krista", + password="123" + ) + ) + + +class TestMetricsAdvisorClientBase(AzureTestCase): + FILTER_HEADERS = ReplayableTest.FILTER_HEADERS + ['Ocp-Apim-Subscription-Key', 'x-api-key'] + + def __init__(self, method_name): + super(TestMetricsAdvisorClientBase, self).__init__(method_name) + self.vcr.match_on = ["path", "method", "query"] + if self.is_live: + service_endpoint = self.get_settings_value("METRICS_ADVISOR_ENDPOINT") + subscription_key = self.get_settings_value("METRICS_ADVISOR_SUBSCRIPTION_KEY") + api_key = self.get_settings_value("METRICS_ADVISOR_API_KEY") + self.anomaly_detection_configuration_id = self.get_settings_value("ANOMALY_DETECTION_CONFIGURATION_ID") + self.anomaly_alert_configuration_id = self.get_settings_value("ANOMALY_ALERT_CONFIGURATION_ID") + self.metric_id = self.get_settings_value("METRIC_ID") + self.incident_id = self.get_settings_value("INCIDENT_ID") + self.dimension_name = self.get_settings_value("DIMENSION_NAME") + self.feedback_id = self.get_settings_value("FEEDBACK_ID") + self.alert_id = self.get_settings_value("ALERT_ID") + self.scrubber.register_name_pair( + self.anomaly_detection_configuration_id, + "anomaly_detection_configuration_id" + ) + self.scrubber.register_name_pair( + self.anomaly_alert_configuration_id, + "anomaly_alert_configuration_id" + ) + self.scrubber.register_name_pair( + self.metric_id, + "metric_id" + ) + self.scrubber.register_name_pair( + self.incident_id, + "incident_id" + ) + self.scrubber.register_name_pair( + self.dimension_name, + "dimension_name" + ) + self.scrubber.register_name_pair( + self.feedback_id, + "feedback_id" + ) + self.scrubber.register_name_pair( + self.alert_id, + "alert_id" + ) + else: + service_endpoint = "https://endpointname.cognitiveservices.azure.com" + subscription_key = "METRICS_ADVISOR_SUBSCRIPTION_KEY" + api_key = "METRICS_ADVISOR_API_KEY" + self.anomaly_detection_configuration_id = "anomaly_detection_configuration_id" + self.anomaly_alert_configuration_id = "anomaly_alert_configuration_id" + self.metric_id = "metric_id" + self.incident_id = "incident_id" + self.dimension_name = "dimension_name" + self.feedback_id = "feedback_id" + self.alert_id = "alert_id" + + self.client = MetricsAdvisorClient(service_endpoint, + MetricsAdvisorKeyCredential(subscription_key, api_key)) + diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/conftest.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/conftest.py new file mode 100644 index 000000000000..d129d1baf24a --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/conftest.py @@ -0,0 +1,14 @@ +# ------------------------------------------------------------------------ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# ------------------------------------------------------------------------- + +import sys + +import pytest + +# Ignore async tests for Python < 3.5 +collect_ignore = [] +if sys.version_info < (3, 5): + collect_ignore.append("async_tests") diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_multiple_configurations.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_multiple_configurations.yaml new file mode 100644 index 000000000000..387d291913bb --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_multiple_configurations.yaml @@ -0,0 +1,393 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "multiple74ba21cf", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '771' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - b05def99-c3c0-457e-840a-b144ec0cbc4d + content-length: + - '0' + date: + - Sat, 12 Sep 2020 00:52:44 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/06e90d2b-9470-48a7-a80b-264a50cce8f4 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '615' + x-request-id: + - b05def99-c3c0-457e-840a-b144ec0cbc4d + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/06e90d2b-9470-48a7-a80b-264a50cce8f4 + response: + body: + string: "{\"dataFeedId\":\"06e90d2b-9470-48a7-a80b-264a50cce8f4\",\"dataFeedName\":\"multiple74ba21cf\",\"metrics\":[{\"metricId\":\"3432d4cc-0b75-471d-bfba-4d91beecf611\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"da966e84-b48b-4594-bbbf-d777d257ad85\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-12T00:52:45Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 6b38b256-97bb-461b-88c6-54e9243eb55e + content-length: + - '1489' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 12 Sep 2020 00:52:46 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '1275' + x-request-id: + - 6b38b256-97bb-461b-88c6-54e9243eb55e + status: + code: 200 + message: OK +- request: + body: '{"name": "multiple74ba21cf", "description": "testing", "metricId": "3432d4cc-0b75-471d-bfba-4d91beecf611", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '280' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - f1027552-bbad-4c4b-be3c-33e1d59d02e6 + content-length: + - '0' + date: + - Sat, 12 Sep 2020 00:52:46 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/7ab2de04-9b9d-4e3d-b732-64d9577af04d + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '83' + x-request-id: + - f1027552-bbad-4c4b-be3c-33e1d59d02e6 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/7ab2de04-9b9d-4e3d-b732-64d9577af04d + response: + body: + string: '{"anomalyDetectionConfigurationId":"7ab2de04-9b9d-4e3d-b732-64d9577af04d","name":"multiple74ba21cf","description":"testing","metricId":"3432d4cc-0b75-471d-bfba-4d91beecf611","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - 653021f7-17c2-44d1-895a-a9ea638c27d4 + content-length: + - '413' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 12 Sep 2020 00:52:46 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '69' + x-request-id: + - 653021f7-17c2-44d1-895a-a9ea638c27d4 + status: + code: 200 + message: OK +- request: + body: '{"name": "testalert74ba21cf", "crossMetricsOperator": "AND", "hookIds": + [], "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": "7ab2de04-9b9d-4e3d-b732-64d9577af04d", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", "metricId": + "3432d4cc-0b75-471d-bfba-4d91beecf611"}}, {"anomalyDetectionConfigurationId": + "7ab2de04-9b9d-4e3d-b732-64d9577af04d", "anomalyScopeType": "Dimension", "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}}, {"anomalyDetectionConfigurationId": "7ab2de04-9b9d-4e3d-b732-64d9577af04d", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '822' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 315513c9-7b2a-47f9-8e29-d2b0eb4eae0b + content-length: + - '0' + date: + - Sat, 12 Sep 2020 00:52:47 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4e1cad0a-f698-4d70-8de2-096df170a849 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '173' + x-request-id: + - 315513c9-7b2a-47f9-8e29-d2b0eb4eae0b + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4e1cad0a-f698-4d70-8de2-096df170a849 + response: + body: + string: '{"anomalyAlertingConfigurationId":"4e1cad0a-f698-4d70-8de2-096df170a849","name":"testalert74ba21cf","description":"","crossMetricsOperator":"AND","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"7ab2de04-9b9d-4e3d-b732-64d9577af04d","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"3432d4cc-0b75-471d-bfba-4d91beecf611","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"7ab2de04-9b9d-4e3d-b732-64d9577af04d","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}},{"anomalyDetectionConfigurationId":"7ab2de04-9b9d-4e3d-b732-64d9577af04d","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: + - 68cb2309-001b-4f6b-8c6a-20b8b1aa2af4 + content-length: + - '967' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 12 Sep 2020 00:52:47 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '88' + x-request-id: + - 68cb2309-001b-4f6b-8c6a-20b8b1aa2af4 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4e1cad0a-f698-4d70-8de2-096df170a849 + response: + body: + string: '' + headers: + apim-request-id: + - 9806f7f0-e662-4338-a5e2-cba5cb891915 + content-length: + - '0' + date: + - Sat, 12 Sep 2020 00:52:47 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '145' + x-request-id: + - 9806f7f0-e662-4338-a5e2-cba5cb891915 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4e1cad0a-f698-4d70-8de2-096df170a849 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: e67cf4c2-d579-4686-8a7e-50ead637c593"}' + headers: + apim-request-id: + - fbe457a1-3898-4af7-a16d-4ceb49975321 + content-length: + - '123' + content-type: + - application/json; charset=utf-8 + date: + - Sat, 12 Sep 2020 00:52:48 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '50' + x-request-id: + - fbe457a1-3898-4af7-a16d-4ceb49975321 + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/7ab2de04-9b9d-4e3d-b732-64d9577af04d + response: + body: + string: '' + headers: + apim-request-id: + - 431b5283-f207-47da-a5ae-49c0aa7aa452 + content-length: + - '0' + date: + - Sat, 12 Sep 2020 00:52:48 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '74' + x-request-id: + - 431b5283-f207-47da-a5ae-49c0aa7aa452 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/06e90d2b-9470-48a7-a80b-264a50cce8f4 + response: + body: + string: '' + headers: + apim-request-id: + - 38c2a488-0e3b-401f-9590-f7fad298fd72 + content-length: + - '0' + date: + - Sat, 12 Sep 2020 00:52:48 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '270' + x-request-id: + - 38c2a488-0e3b-401f-9590-f7fad298fd72 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_series_group_alert_direction_both.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_series_group_alert_direction_both.yaml new file mode 100644 index 000000000000..6770b5c728e0 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_series_group_alert_direction_both.yaml @@ -0,0 +1,388 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "seriesgroupdb5525d3", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - cb85acbd-fadf-48e2-b8a4-b5e637e9ffa2 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:31 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/a51a0232-28fa-44f9-9e1c-5ba4cb5e4195 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '609' + x-request-id: + - cb85acbd-fadf-48e2-b8a4-b5e637e9ffa2 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/a51a0232-28fa-44f9-9e1c-5ba4cb5e4195 + response: + body: + string: "{\"dataFeedId\":\"a51a0232-28fa-44f9-9e1c-5ba4cb5e4195\",\"dataFeedName\":\"seriesgroupdb5525d3\",\"metrics\":[{\"metricId\":\"9ce1f7d4-910e-409c-af53-c04046077523\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"e206ba05-6cab-4707-98b8-361420259873\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-11T23:42:31Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - da22530b-2807-4607-81b2-42ce26da3c20 + content-length: + - '1492' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:42:31 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '233' + x-request-id: + - da22530b-2807-4607-81b2-42ce26da3c20 + status: + code: 200 + message: OK +- request: + body: '{"name": "seriesgroupdb5525d3", "description": "testing", "metricId": "9ce1f7d4-910e-409c-af53-c04046077523", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 9129f23a-7f50-4951-a2b9-be1161317dda + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:37 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/cb6eae00-6f9b-4af6-a9dd-6d8a7a31ed9e + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5191' + x-request-id: + - 9129f23a-7f50-4951-a2b9-be1161317dda + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/cb6eae00-6f9b-4af6-a9dd-6d8a7a31ed9e + response: + body: + string: '{"anomalyDetectionConfigurationId":"cb6eae00-6f9b-4af6-a9dd-6d8a7a31ed9e","name":"seriesgroupdb5525d3","description":"testing","metricId":"9ce1f7d4-910e-409c-af53-c04046077523","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - b2cebb49-cede-48a7-8a68-dd96f468c021 + content-length: + - '416' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:42:37 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '200' + x-request-id: + - b2cebb49-cede-48a7-8a68-dd96f468c021 + status: + code: 200 + message: OK +- request: + body: '{"name": "testalertdb5525d3", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "cb6eae00-6f9b-4af6-a9dd-6d8a7a31ed9e", + "anomalyScopeType": "Dimension", "dimensionAnomalyScope": {"dimension": {"city": + "Shenzhen"}}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", + "metricId": "9ce1f7d4-910e-409c-af53-c04046077523"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '368' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 3fd1bf1b-cd77-49a7-9758-438aa0a3f9f2 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:38 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/97cede49-ee7a-4ac0-817a-3f9621b12a83 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '232' + x-request-id: + - 3fd1bf1b-cd77-49a7-9758-438aa0a3f9f2 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/97cede49-ee7a-4ac0-817a-3f9621b12a83 + response: + body: + string: '{"anomalyAlertingConfigurationId":"97cede49-ee7a-4ac0-817a-3f9621b12a83","name":"testalertdb5525d3","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"cb6eae00-6f9b-4af6-a9dd-6d8a7a31ed9e","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"9ce1f7d4-910e-409c-af53-c04046077523","triggerForMissing":false}}]}' + headers: + apim-request-id: + - 8198b59b-3bc9-4d55-9ba2-dddf930a1d6b + content-length: + - '488' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:42:38 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '137' + x-request-id: + - 8198b59b-3bc9-4d55-9ba2-dddf930a1d6b + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/97cede49-ee7a-4ac0-817a-3f9621b12a83 + response: + body: + string: '' + headers: + apim-request-id: + - e5300ac1-f812-44f9-847b-452d99abdbf9 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:38 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '157' + x-request-id: + - e5300ac1-f812-44f9-847b-452d99abdbf9 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/97cede49-ee7a-4ac0-817a-3f9621b12a83 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: 06e2f511-2860-4bd9-8280-6f979b00e5ec"}' + headers: + apim-request-id: + - 16a5afc5-75d0-42bf-9245-e3e1e5ff9483 + content-length: + - '123' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:42:39 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '68' + x-request-id: + - 16a5afc5-75d0-42bf-9245-e3e1e5ff9483 + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/cb6eae00-6f9b-4af6-a9dd-6d8a7a31ed9e + response: + body: + string: '' + headers: + apim-request-id: + - db473b71-3a40-4675-b568-f5ea60e59fe2 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:39 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '112' + x-request-id: + - db473b71-3a40-4675-b568-f5ea60e59fe2 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/a51a0232-28fa-44f9-9e1c-5ba4cb5e4195 + response: + body: + string: '' + headers: + apim-request-id: + - 499a6731-38ab-4191-b57a-51410b93a1fe + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:40 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '401' + x-request-id: + - 499a6731-38ab-4191-b57a-51410b93a1fe + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_series_group_alert_direction_down.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_series_group_alert_direction_down.yaml new file mode 100644 index 000000000000..c533b8327b37 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_series_group_alert_direction_down.yaml @@ -0,0 +1,388 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "seriesgroupdb6925de", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 00cecf28-5907-4d17-a49c-97bd18b6abb9 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:46 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/f779fa3e-7981-43d3-9963-f3b4379cecf3 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5448' + x-request-id: + - 00cecf28-5907-4d17-a49c-97bd18b6abb9 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/f779fa3e-7981-43d3-9963-f3b4379cecf3 + response: + body: + string: "{\"dataFeedId\":\"f779fa3e-7981-43d3-9963-f3b4379cecf3\",\"dataFeedName\":\"seriesgroupdb6925de\",\"metrics\":[{\"metricId\":\"ac379d67-94d3-4e8a-b9fe-0ef9636a4f4a\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"45ea825d-050d-42b4-83fd-bcfdbb7d7a53\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-11T23:42:46Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 002ec5c3-783c-4ac6-a81b-f16724283ae8 + content-length: + - '1492' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:42:46 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '156' + x-request-id: + - 002ec5c3-783c-4ac6-a81b-f16724283ae8 + status: + code: 200 + message: OK +- request: + body: '{"name": "seriesgroupdb6925de", "description": "testing", "metricId": "ac379d67-94d3-4e8a-b9fe-0ef9636a4f4a", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - a105e206-f579-4fac-859a-9ccb83ea96f1 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:47 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/9c77024e-fdb3-4145-a3c5-8c5ce12738d4 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '102' + x-request-id: + - a105e206-f579-4fac-859a-9ccb83ea96f1 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/9c77024e-fdb3-4145-a3c5-8c5ce12738d4 + response: + body: + string: '{"anomalyDetectionConfigurationId":"9c77024e-fdb3-4145-a3c5-8c5ce12738d4","name":"seriesgroupdb6925de","description":"testing","metricId":"ac379d67-94d3-4e8a-b9fe-0ef9636a4f4a","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - 6b912cb6-72f6-44ab-a524-df2dbc4944bd + content-length: + - '416' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:42:47 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '72' + x-request-id: + - 6b912cb6-72f6-44ab-a524-df2dbc4944bd + status: + code: 200 + message: OK +- request: + body: '{"name": "testalertdb6925de", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "9c77024e-fdb3-4145-a3c5-8c5ce12738d4", + "anomalyScopeType": "Dimension", "dimensionAnomalyScope": {"dimension": {"city": + "Shenzhen"}}, "valueFilter": {"lower": 1.0, "direction": "Down", "metricId": + "ac379d67-94d3-4e8a-b9fe-0ef9636a4f4a"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '354' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 4971abe6-5019-4828-a6e6-8761fbf6f0c5 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:47 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/b3935d77-9752-479f-b084-8f94bf860d1e + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '156' + x-request-id: + - 4971abe6-5019-4828-a6e6-8761fbf6f0c5 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/b3935d77-9752-479f-b084-8f94bf860d1e + response: + body: + string: '{"anomalyAlertingConfigurationId":"b3935d77-9752-479f-b084-8f94bf860d1e","name":"testalertdb6925de","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"9c77024e-fdb3-4145-a3c5-8c5ce12738d4","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"valueFilter":{"lower":1.0,"direction":"Down","metricId":"ac379d67-94d3-4e8a-b9fe-0ef9636a4f4a","triggerForMissing":false}}]}' + headers: + apim-request-id: + - a4d66221-73b0-40a2-a58f-9ebb327298e0 + content-length: + - '476' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:42:47 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '115' + x-request-id: + - a4d66221-73b0-40a2-a58f-9ebb327298e0 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/b3935d77-9752-479f-b084-8f94bf860d1e + response: + body: + string: '' + headers: + apim-request-id: + - fa90633e-388e-42a0-b3aa-9a281d965128 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:48 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '83' + x-request-id: + - fa90633e-388e-42a0-b3aa-9a281d965128 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/b3935d77-9752-479f-b084-8f94bf860d1e + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: 01f74466-9daf-40bb-bd27-cf1c92281bd4"}' + headers: + apim-request-id: + - e42f9134-73a7-411c-856d-b88da6c3ad4b + content-length: + - '123' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:42:48 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '44' + x-request-id: + - e42f9134-73a7-411c-856d-b88da6c3ad4b + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/9c77024e-fdb3-4145-a3c5-8c5ce12738d4 + response: + body: + string: '' + headers: + apim-request-id: + - b8fc53e0-bcc7-4317-a2cc-d93cbd8e6773 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:48 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '79' + x-request-id: + - b8fc53e0-bcc7-4317-a2cc-d93cbd8e6773 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/f779fa3e-7981-43d3-9963-f3b4379cecf3 + response: + body: + string: '' + headers: + apim-request-id: + - c7ef0225-6f76-4362-ab35-16062b5e8fa9 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:50 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '285' + x-request-id: + - c7ef0225-6f76-4362-ab35-16062b5e8fa9 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_series_group_alert_direction_up.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_series_group_alert_direction_up.yaml new file mode 100644 index 000000000000..28ff095f54c3 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_series_group_alert_direction_up.yaml @@ -0,0 +1,387 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "seriesgroup903e250b", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - f90d5243-4355-4b53-b4e8-ac929aae0885 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:51 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/9b1b1e12-83a3-4e21-ad13-066dcb7eeabc + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '379' + x-request-id: + - f90d5243-4355-4b53-b4e8-ac929aae0885 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/9b1b1e12-83a3-4e21-ad13-066dcb7eeabc + response: + body: + string: "{\"dataFeedId\":\"9b1b1e12-83a3-4e21-ad13-066dcb7eeabc\",\"dataFeedName\":\"seriesgroup903e250b\",\"metrics\":[{\"metricId\":\"d4d3c244-25a7-4d65-9f75-0abfb4a5f371\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"c9dc991b-2d57-461b-ab5f-853b7a471968\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-11T23:42:51Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 8ba8c00d-5ad0-44c6-86c8-e825ba83979b + content-length: + - '1492' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:42:51 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '123' + x-request-id: + - 8ba8c00d-5ad0-44c6-86c8-e825ba83979b + status: + code: 200 + message: OK +- request: + body: '{"name": "seriesgroup903e250b", "description": "testing", "metricId": "d4d3c244-25a7-4d65-9f75-0abfb4a5f371", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - d3908fd5-302b-4bdb-bdc0-af9b95d44034 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:51 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/4b8c3fab-a92c-44a7-9e3d-978d768bacd9 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '77' + x-request-id: + - d3908fd5-302b-4bdb-bdc0-af9b95d44034 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/4b8c3fab-a92c-44a7-9e3d-978d768bacd9 + response: + body: + string: '{"anomalyDetectionConfigurationId":"4b8c3fab-a92c-44a7-9e3d-978d768bacd9","name":"seriesgroup903e250b","description":"testing","metricId":"d4d3c244-25a7-4d65-9f75-0abfb4a5f371","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - 7d8e70c1-6fd5-4640-8bfc-c2f4724072ee + content-length: + - '416' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:42:52 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '81' + x-request-id: + - 7d8e70c1-6fd5-4640-8bfc-c2f4724072ee + status: + code: 200 + message: OK +- request: + body: '{"name": "testalert903e250b", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "4b8c3fab-a92c-44a7-9e3d-978d768bacd9", + "anomalyScopeType": "Dimension", "dimensionAnomalyScope": {"dimension": {"city": + "Shenzhen"}}, "valueFilter": {"upper": 5.0, "direction": "Up", "metricId": "d4d3c244-25a7-4d65-9f75-0abfb4a5f371"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '352' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - e176d314-7343-46e4-ba22-a010a5970596 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:52 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4102c664-33f9-4128-8da9-bd28071ede3e + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '274' + x-request-id: + - e176d314-7343-46e4-ba22-a010a5970596 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4102c664-33f9-4128-8da9-bd28071ede3e + response: + body: + string: '{"anomalyAlertingConfigurationId":"4102c664-33f9-4128-8da9-bd28071ede3e","name":"testalert903e250b","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"4b8c3fab-a92c-44a7-9e3d-978d768bacd9","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"valueFilter":{"upper":5.0,"direction":"Up","metricId":"d4d3c244-25a7-4d65-9f75-0abfb4a5f371","triggerForMissing":false}}]}' + headers: + apim-request-id: + - 20eb9db7-5ae0-43fa-8413-bcd2b619a440 + content-length: + - '474' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:42:52 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '78' + x-request-id: + - 20eb9db7-5ae0-43fa-8413-bcd2b619a440 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4102c664-33f9-4128-8da9-bd28071ede3e + response: + body: + string: '' + headers: + apim-request-id: + - eb7b10e9-675c-47f7-b0c3-0f8880b06129 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:53 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '111' + x-request-id: + - eb7b10e9-675c-47f7-b0c3-0f8880b06129 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4102c664-33f9-4128-8da9-bd28071ede3e + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: d3ee4381-6f31-4ccb-bd30-227d7dbcc12c"}' + headers: + apim-request-id: + - f355491c-bd2f-4c88-b2ea-6755cb7c2aff + content-length: + - '123' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:42:53 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '63' + x-request-id: + - f355491c-bd2f-4c88-b2ea-6755cb7c2aff + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/4b8c3fab-a92c-44a7-9e3d-978d768bacd9 + response: + body: + string: '' + headers: + apim-request-id: + - 1129fbee-d40a-4781-9dcb-4113f8ab0c85 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:53 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '93' + x-request-id: + - 1129fbee-d40a-4781-9dcb-4113f8ab0c85 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/9b1b1e12-83a3-4e21-ad13-066dcb7eeabc + response: + body: + string: '' + headers: + apim-request-id: + - 0447c11e-ec91-4a3f-a40d-5991fc7d89eb + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:42:54 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '317' + x-request-id: + - 0447c11e-ec91-4a3f-a40d-5991fc7d89eb + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_series_group_severity_condition.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_series_group_severity_condition.yaml new file mode 100644 index 000000000000..beff09720cb5 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_series_group_severity_condition.yaml @@ -0,0 +1,388 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "seriesgroupsev92802530", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '777' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - e5ecd29b-873e-45ab-83c3-edcc83c8afd7 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:55:12 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/09b7e987-da23-4bc2-9d30-33abfaf6bdb3 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '868' + x-request-id: + - e5ecd29b-873e-45ab-83c3-edcc83c8afd7 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/09b7e987-da23-4bc2-9d30-33abfaf6bdb3 + response: + body: + string: "{\"dataFeedId\":\"09b7e987-da23-4bc2-9d30-33abfaf6bdb3\",\"dataFeedName\":\"seriesgroupsev92802530\",\"metrics\":[{\"metricId\":\"1898a635-32b6-47bb-b2dc-03527fcd81fc\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"e388b576-a8d2-49fa-81c7-6783921a541e\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-11T23:55:12Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 98ea6be7-13de-447f-9caa-e5da191fc379 + content-length: + - '1495' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:55:12 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '182' + x-request-id: + - 98ea6be7-13de-447f-9caa-e5da191fc379 + status: + code: 200 + message: OK +- request: + body: '{"name": "seriesgroupsev92802530", "description": "testing", "metricId": + "1898a635-32b6-47bb-b2dc-03527fcd81fc", "wholeMetricConfiguration": {"smartDetectionCondition": + {"sensitivity": 50.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 50, "minRatio": 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '286' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 0126e03e-e01c-45f5-9006-4c515b1436c9 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:55:12 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/4ac1d1f3-70e2-4374-a0e9-34adcfe66e49 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '114' + x-request-id: + - 0126e03e-e01c-45f5-9006-4c515b1436c9 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/4ac1d1f3-70e2-4374-a0e9-34adcfe66e49 + response: + body: + string: '{"anomalyDetectionConfigurationId":"4ac1d1f3-70e2-4374-a0e9-34adcfe66e49","name":"seriesgroupsev92802530","description":"testing","metricId":"1898a635-32b6-47bb-b2dc-03527fcd81fc","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - 3369a8bf-6740-430c-951c-e7e4c8298923 + content-length: + - '419' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:55:13 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '133' + x-request-id: + - 3369a8bf-6740-430c-951c-e7e4c8298923 + status: + code: 200 + message: OK +- request: + body: '{"name": "testalert92802530", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "4ac1d1f3-70e2-4374-a0e9-34adcfe66e49", + "anomalyScopeType": "Dimension", "dimensionAnomalyScope": {"dimension": {"city": + "Shenzhen"}}, "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '325' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 36c1180b-a464-47e5-a79a-c34497e3c726 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:55:13 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4831075f-862d-4052-aa77-d223e08a24f5 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '156' + x-request-id: + - 36c1180b-a464-47e5-a79a-c34497e3c726 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4831075f-862d-4052-aa77-d223e08a24f5 + response: + body: + string: '{"anomalyAlertingConfigurationId":"4831075f-862d-4052-aa77-d223e08a24f5","name":"testalert92802530","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"4ac1d1f3-70e2-4374-a0e9-34adcfe66e49","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: + - dadb2116-af4e-43d4-b789-af0501a4b253 + content-length: + - '423' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:55:13 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '76' + x-request-id: + - dadb2116-af4e-43d4-b789-af0501a4b253 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4831075f-862d-4052-aa77-d223e08a24f5 + response: + body: + string: '' + headers: + apim-request-id: + - dc157977-fe1c-4ec9-81a7-82998c70c483 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:55:13 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '79' + x-request-id: + - dc157977-fe1c-4ec9-81a7-82998c70c483 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4831075f-862d-4052-aa77-d223e08a24f5 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: bd5591c4-de04-430b-a705-d5c2e56d972c"}' + headers: + apim-request-id: + - e681197b-aa39-467b-b3f3-9b4f1b83cafd + content-length: + - '123' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:55:14 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '47' + x-request-id: + - e681197b-aa39-467b-b3f3-9b4f1b83cafd + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/4ac1d1f3-70e2-4374-a0e9-34adcfe66e49 + response: + body: + string: '' + headers: + apim-request-id: + - b3c68663-e5de-4044-9c7e-3890554b629a + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:55:14 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '79' + x-request-id: + - b3c68663-e5de-4044-9c7e-3890554b629a + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/09b7e987-da23-4bc2-9d30-33abfaf6bdb3 + response: + body: + string: '' + headers: + apim-request-id: + - f4c3efa0-963b-4e77-a63e-f397bd7099a9 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:55:15 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '309' + x-request-id: + - f4c3efa0-963b-4e77-a63e-f397bd7099a9 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_snooze_condition.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_snooze_condition.yaml new file mode 100644 index 000000000000..175af3ca310a --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_snooze_condition.yaml @@ -0,0 +1,386 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "topnup916c1edd", "granularityName": + "Daily", "metrics": [{"metricName": "cost"}, {"metricName": "revenue"}], "dataStartFrom": + "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": 0, "maxConcurrency": -1, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": + {"connectionString": "connectionstring", "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '697' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - b3d80846-4116-4252-8f6c-bcf8352d7c42 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 22:11:21 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/e25b6429-b4b0-446b-a5b9-89f9b3386e53 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '579' + x-request-id: + - b3d80846-4116-4252-8f6c-bcf8352d7c42 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/e25b6429-b4b0-446b-a5b9-89f9b3386e53 + response: + body: + string: "{\"dataFeedId\":\"e25b6429-b4b0-446b-a5b9-89f9b3386e53\",\"dataFeedName\":\"topnup916c1edd\",\"metrics\":[{\"metricId\":\"0b0a371e-cdd9-4193-92c0-77e10b5b4f6f\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"4a66c2b8-c893-48c5-a9e7-938e21af2b7c\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-11T22:11:21Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 54bddd2e-9b58-44ba-b8d8-08cb265b53e0 + content-length: + - '1371' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 22:11:21 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '125' + x-request-id: + - 54bddd2e-9b58-44ba-b8d8-08cb265b53e0 + status: + code: 200 + message: OK +- request: + body: '{"name": "topnup916c1edd", "description": "testing", "metricId": "0b0a371e-cdd9-4193-92c0-77e10b5b4f6f", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '278' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 21495e58-cef2-41c1-88ef-948e8607ef4c + content-length: + - '0' + date: + - Fri, 11 Sep 2020 22:11:21 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bccada1b-0e51-4475-bba6-c24a0c07af60 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '95' + x-request-id: + - 21495e58-cef2-41c1-88ef-948e8607ef4c + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bccada1b-0e51-4475-bba6-c24a0c07af60 + response: + body: + string: '{"anomalyDetectionConfigurationId":"bccada1b-0e51-4475-bba6-c24a0c07af60","name":"topnup916c1edd","description":"testing","metricId":"0b0a371e-cdd9-4193-92c0-77e10b5b4f6f","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - a5307dc2-442f-4ea3-9c82-26131f9c9061 + content-length: + - '411' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 22:11:22 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '68' + x-request-id: + - a5307dc2-442f-4ea3-9c82-26131f9c9061 + status: + code: 200 + message: OK +- request: + body: '{"name": "testalert916c1edd", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "bccada1b-0e51-4475-bba6-c24a0c07af60", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "snoozeFilter": {"autoSnooze": 5, "snoozeScope": "Metric", "onlyForSuccessive": + true}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '334' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - fad22bcd-38cf-4a06-a2e9-906c11bc38eb + content-length: + - '0' + date: + - Fri, 11 Sep 2020 22:11:22 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/14082336-ed9b-4b9a-9206-c8352e50c907 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '91' + x-request-id: + - fad22bcd-38cf-4a06-a2e9-906c11bc38eb + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/14082336-ed9b-4b9a-9206-c8352e50c907 + response: + body: + string: '{"anomalyAlertingConfigurationId":"14082336-ed9b-4b9a-9206-c8352e50c907","name":"testalert916c1edd","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"bccada1b-0e51-4475-bba6-c24a0c07af60","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"snoozeFilter":{"autoSnooze":5,"snoozeScope":"Metric","onlyForSuccessive":true}}]}' + headers: + apim-request-id: + - 88d4a000-e756-481a-aed0-c4aa15a3c956 + content-length: + - '427' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 22:11:22 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '67' + x-request-id: + - 88d4a000-e756-481a-aed0-c4aa15a3c956 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/14082336-ed9b-4b9a-9206-c8352e50c907 + response: + body: + string: '' + headers: + apim-request-id: + - 938175d2-496b-4d66-8f28-52eb05cb25bf + content-length: + - '0' + date: + - Fri, 11 Sep 2020 22:11:23 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '84' + x-request-id: + - 938175d2-496b-4d66-8f28-52eb05cb25bf + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/14082336-ed9b-4b9a-9206-c8352e50c907 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: 2066651b-5c39-4c9f-b2d2-888e570ee0f2"}' + headers: + apim-request-id: + - 7d3fd7f7-7acc-4885-9e84-1f539a5f0511 + content-length: + - '123' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 22:11:23 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '50' + x-request-id: + - 7d3fd7f7-7acc-4885-9e84-1f539a5f0511 + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bccada1b-0e51-4475-bba6-c24a0c07af60 + response: + body: + string: '' + headers: + apim-request-id: + - 3278a933-b4ae-4aa3-a5dd-5115c895f1c7 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 22:11:23 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '71' + x-request-id: + - 3278a933-b4ae-4aa3-a5dd-5115c895f1c7 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/e25b6429-b4b0-446b-a5b9-89f9b3386e53 + response: + body: + string: '' + headers: + apim-request-id: + - 57997ab9-8739-46fb-b9c7-f939b86a20d3 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 22:11:24 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '263' + x-request-id: + - 57997ab9-8739-46fb-b9c7-f939b86a20d3 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_top_n_alert_direction_both.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_top_n_alert_direction_both.yaml new file mode 100644 index 000000000000..126664c8326e --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_top_n_alert_direction_both.yaml @@ -0,0 +1,386 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "topnupd9f722dc", "granularityName": + "Daily", "metrics": [{"metricName": "cost"}, {"metricName": "revenue"}], "dataStartFrom": + "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": 0, "maxConcurrency": -1, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": + {"connectionString": "connectionstring", "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '697' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 90794bb0-09d8-4d2f-9487-484fac316dd6 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:46 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/6bfed16d-c71c-4370-944c-30e703ad90a7 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '754' + x-request-id: + - 90794bb0-09d8-4d2f-9487-484fac316dd6 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/6bfed16d-c71c-4370-944c-30e703ad90a7 + response: + body: + string: "{\"dataFeedId\":\"6bfed16d-c71c-4370-944c-30e703ad90a7\",\"dataFeedName\":\"topnupd9f722dc\",\"metrics\":[{\"metricId\":\"9946dd6f-313f-4bff-ac1d-a3fdcbc3876c\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"1b7d5d33-df3a-4387-821c-e4df9afac665\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-11T20:47:46Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 77d64d71-0e46-4bf3-a498-3e2abffc06cf + content-length: + - '1371' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 20:47:47 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '272' + x-request-id: + - 77d64d71-0e46-4bf3-a498-3e2abffc06cf + status: + code: 200 + message: OK +- request: + body: '{"name": "topnupd9f722dc", "description": "testing", "metricId": "9946dd6f-313f-4bff-ac1d-a3fdcbc3876c", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '278' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 4653cfc9-fbe8-459f-9561-77710bcbd0eb + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:47 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/4e49d56f-8db8-44b1-b36c-83630ddf19b2 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '203' + x-request-id: + - 4653cfc9-fbe8-459f-9561-77710bcbd0eb + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/4e49d56f-8db8-44b1-b36c-83630ddf19b2 + response: + body: + string: '{"anomalyDetectionConfigurationId":"4e49d56f-8db8-44b1-b36c-83630ddf19b2","name":"topnupd9f722dc","description":"testing","metricId":"9946dd6f-313f-4bff-ac1d-a3fdcbc3876c","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - 9a4a9960-8bde-45de-b25b-bbab677d50b0 + content-length: + - '411' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 20:47:47 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '67' + x-request-id: + - 9a4a9960-8bde-45de-b25b-bbab677d50b0 + status: + code: 200 + message: OK +- request: + body: '{"name": "testalertd9f722dc", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "4e49d56f-8db8-44b1-b36c-83630ddf19b2", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", "metricId": + "9946dd6f-313f-4bff-ac1d-a3fdcbc3876c"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '365' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 30caff79-4674-492a-b0bf-c0ec755294cb + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:48 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/12e828ba-d28b-4ee4-b9d3-41f16f5301c8 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '101' + x-request-id: + - 30caff79-4674-492a-b0bf-c0ec755294cb + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/12e828ba-d28b-4ee4-b9d3-41f16f5301c8 + response: + body: + string: '{"anomalyAlertingConfigurationId":"12e828ba-d28b-4ee4-b9d3-41f16f5301c8","name":"testalertd9f722dc","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"4e49d56f-8db8-44b1-b36c-83630ddf19b2","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"9946dd6f-313f-4bff-ac1d-a3fdcbc3876c","triggerForMissing":false}}]}' + headers: + apim-request-id: + - 24e49d60-3246-4257-8faa-980ab5e58373 + content-length: + - '482' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 20:47:48 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '71' + x-request-id: + - 24e49d60-3246-4257-8faa-980ab5e58373 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/12e828ba-d28b-4ee4-b9d3-41f16f5301c8 + response: + body: + string: '' + headers: + apim-request-id: + - 8f4ecf3f-81ac-4eb4-b2e2-061151e18c5f + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:48 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '92' + x-request-id: + - 8f4ecf3f-81ac-4eb4-b2e2-061151e18c5f + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/12e828ba-d28b-4ee4-b9d3-41f16f5301c8 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: d46a6288-2091-40d5-aa19-5990e9afcd3f"}' + headers: + apim-request-id: + - fe542391-693a-4527-80d2-37750e92122b + content-length: + - '123' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 20:47:48 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '47' + x-request-id: + - fe542391-693a-4527-80d2-37750e92122b + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/4e49d56f-8db8-44b1-b36c-83630ddf19b2 + response: + body: + string: '' + headers: + apim-request-id: + - dec1cef5-38bd-4148-8820-476e4f74c40b + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:49 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '83' + x-request-id: + - dec1cef5-38bd-4148-8820-476e4f74c40b + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/6bfed16d-c71c-4370-944c-30e703ad90a7 + response: + body: + string: '' + headers: + apim-request-id: + - 828e46ef-b204-4933-91d5-675d31c20987 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:49 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '271' + x-request-id: + - 828e46ef-b204-4933-91d5-675d31c20987 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_top_n_alert_direction_down.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_top_n_alert_direction_down.yaml new file mode 100644 index 000000000000..d45b39492d27 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_top_n_alert_direction_down.yaml @@ -0,0 +1,385 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "topnupda0b22e7", "granularityName": + "Daily", "metrics": [{"metricName": "cost"}, {"metricName": "revenue"}], "dataStartFrom": + "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": 0, "maxConcurrency": -1, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": + {"connectionString": "connectionstring", "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '697' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 9797700e-a90b-4c75-9d12-1516aeb55f30 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:50 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/627e5840-d10d-40ed-b09d-48e51502c696 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '346' + x-request-id: + - 9797700e-a90b-4c75-9d12-1516aeb55f30 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/627e5840-d10d-40ed-b09d-48e51502c696 + response: + body: + string: "{\"dataFeedId\":\"627e5840-d10d-40ed-b09d-48e51502c696\",\"dataFeedName\":\"topnupda0b22e7\",\"metrics\":[{\"metricId\":\"95839785-d3e0-469c-aa77-a0cf7852d931\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"fc0b9e92-0f14-42d7-a646-acfee04eba2b\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-11T20:47:51Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - c7a36a3f-2db5-42ac-a746-0b16e61be752 + content-length: + - '1371' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 20:47:50 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '126' + x-request-id: + - c7a36a3f-2db5-42ac-a746-0b16e61be752 + status: + code: 200 + message: OK +- request: + body: '{"name": "topnupda0b22e7", "description": "testing", "metricId": "95839785-d3e0-469c-aa77-a0cf7852d931", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '278' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 32199446-4755-4951-96b3-a2af46f36844 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:51 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/cc77b363-526c-4423-8d57-25d5aaf669d6 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '77' + x-request-id: + - 32199446-4755-4951-96b3-a2af46f36844 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/cc77b363-526c-4423-8d57-25d5aaf669d6 + response: + body: + string: '{"anomalyDetectionConfigurationId":"cc77b363-526c-4423-8d57-25d5aaf669d6","name":"topnupda0b22e7","description":"testing","metricId":"95839785-d3e0-469c-aa77-a0cf7852d931","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - 5858cc60-194c-4bab-92c1-7385fcafa0ff + content-length: + - '411' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 20:47:51 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '73' + x-request-id: + - 5858cc60-194c-4bab-92c1-7385fcafa0ff + status: + code: 200 + message: OK +- request: + body: '{"name": "testalertda0b22e7", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "cc77b363-526c-4423-8d57-25d5aaf669d6", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"lower": 1.0, "direction": "Down", "metricId": "95839785-d3e0-469c-aa77-a0cf7852d931"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '351' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 7ef92083-ef8f-4875-9184-0a155ffafc34 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:51 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/26150361-3915-4c87-a4af-082cf546d1b7 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '85' + x-request-id: + - 7ef92083-ef8f-4875-9184-0a155ffafc34 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/26150361-3915-4c87-a4af-082cf546d1b7 + response: + body: + string: '{"anomalyAlertingConfigurationId":"26150361-3915-4c87-a4af-082cf546d1b7","name":"testalertda0b22e7","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"cc77b363-526c-4423-8d57-25d5aaf669d6","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"lower":1.0,"direction":"Down","metricId":"95839785-d3e0-469c-aa77-a0cf7852d931","triggerForMissing":false}}]}' + headers: + apim-request-id: + - f407b8a7-882b-4e02-af29-0b57ec2ba90d + content-length: + - '470' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 20:47:51 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '66' + x-request-id: + - f407b8a7-882b-4e02-af29-0b57ec2ba90d + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/26150361-3915-4c87-a4af-082cf546d1b7 + response: + body: + string: '' + headers: + apim-request-id: + - 63790122-9c74-401b-a4da-ef12128759eb + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:52 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '86' + x-request-id: + - 63790122-9c74-401b-a4da-ef12128759eb + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/26150361-3915-4c87-a4af-082cf546d1b7 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: 2ff78249-4242-47a3-9765-100ba0a373ac"}' + headers: + apim-request-id: + - 9ad5e98b-a8c3-4702-88dc-c69ed2729388 + content-length: + - '123' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 20:47:52 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '48' + x-request-id: + - 9ad5e98b-a8c3-4702-88dc-c69ed2729388 + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/cc77b363-526c-4423-8d57-25d5aaf669d6 + response: + body: + string: '' + headers: + apim-request-id: + - 87bb3b21-f22c-43a3-b944-99fca32ceb3e + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:52 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '76' + x-request-id: + - 87bb3b21-f22c-43a3-b944-99fca32ceb3e + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/627e5840-d10d-40ed-b09d-48e51502c696 + response: + body: + string: '' + headers: + apim-request-id: + - dc431d69-1038-4366-8a60-943cc159e349 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:53 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '286' + x-request-id: + - dc431d69-1038-4366-8a60-943cc159e349 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_top_n_alert_direction_up.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_top_n_alert_direction_up.yaml new file mode 100644 index 000000000000..b57b9fab650d --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_top_n_alert_direction_up.yaml @@ -0,0 +1,385 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "topnup94ce2214", "granularityName": + "Daily", "metrics": [{"metricName": "cost"}, {"metricName": "revenue"}], "dataStartFrom": + "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": 0, "maxConcurrency": -1, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": + {"connectionString": "connectionstring", "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '697' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - dce3a701-1a0c-4c90-a7b6-d48f840791ec + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:55 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/5723db36-e8ca-46ed-902e-d1788645d835 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '336' + x-request-id: + - dce3a701-1a0c-4c90-a7b6-d48f840791ec + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/5723db36-e8ca-46ed-902e-d1788645d835 + response: + body: + string: "{\"dataFeedId\":\"5723db36-e8ca-46ed-902e-d1788645d835\",\"dataFeedName\":\"topnup94ce2214\",\"metrics\":[{\"metricId\":\"39c32370-3c57-4fe0-a1a8-b9215874ac24\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"ffe32fae-9822-4aba-b0e6-002c1b6a0cc4\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-11T20:47:55Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 73cbb01e-d0ec-4862-9e2d-535254b2997b + content-length: + - '1371' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 20:47:55 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '132' + x-request-id: + - 73cbb01e-d0ec-4862-9e2d-535254b2997b + status: + code: 200 + message: OK +- request: + body: '{"name": "topnup94ce2214", "description": "testing", "metricId": "39c32370-3c57-4fe0-a1a8-b9215874ac24", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '278' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 9a4dd816-ac6b-486f-bdee-f1288255488d + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:56 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/28e0ebf7-52f5-4b5f-8962-78d3655efa93 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '74' + x-request-id: + - 9a4dd816-ac6b-486f-bdee-f1288255488d + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/28e0ebf7-52f5-4b5f-8962-78d3655efa93 + response: + body: + string: '{"anomalyDetectionConfigurationId":"28e0ebf7-52f5-4b5f-8962-78d3655efa93","name":"topnup94ce2214","description":"testing","metricId":"39c32370-3c57-4fe0-a1a8-b9215874ac24","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - e622d0d0-7aec-4769-85bf-be6dfbab8f19 + content-length: + - '411' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 20:47:56 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '66' + x-request-id: + - e622d0d0-7aec-4769-85bf-be6dfbab8f19 + status: + code: 200 + message: OK +- request: + body: '{"name": "testalert94ce2214", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "28e0ebf7-52f5-4b5f-8962-78d3655efa93", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"upper": 5.0, "direction": "Up", "metricId": "39c32370-3c57-4fe0-a1a8-b9215874ac24"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '349' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - c4f911f1-2045-4735-95cb-43deb05c47af + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:56 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/e011bb29-5b90-43c1-9589-0cbec28d4731 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '98' + x-request-id: + - c4f911f1-2045-4735-95cb-43deb05c47af + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/e011bb29-5b90-43c1-9589-0cbec28d4731 + response: + body: + string: '{"anomalyAlertingConfigurationId":"e011bb29-5b90-43c1-9589-0cbec28d4731","name":"testalert94ce2214","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"28e0ebf7-52f5-4b5f-8962-78d3655efa93","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"upper":5.0,"direction":"Up","metricId":"39c32370-3c57-4fe0-a1a8-b9215874ac24","triggerForMissing":false}}]}' + headers: + apim-request-id: + - 9d2a23a4-a6a1-47f0-91f3-b8632d16a93a + content-length: + - '468' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 20:47:56 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '72' + x-request-id: + - 9d2a23a4-a6a1-47f0-91f3-b8632d16a93a + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/e011bb29-5b90-43c1-9589-0cbec28d4731 + response: + body: + string: '' + headers: + apim-request-id: + - 9316af87-2655-46e6-827f-fdaa487a2b5a + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:57 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '88' + x-request-id: + - 9316af87-2655-46e6-827f-fdaa487a2b5a + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/e011bb29-5b90-43c1-9589-0cbec28d4731 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: 217516c5-9294-45d9-bc39-783cf97ac805"}' + headers: + apim-request-id: + - b2b6cad2-9fd1-42cd-bf52-56de7c53ff1f + content-length: + - '123' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 20:47:57 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '46' + x-request-id: + - b2b6cad2-9fd1-42cd-bf52-56de7c53ff1f + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/28e0ebf7-52f5-4b5f-8962-78d3655efa93 + response: + body: + string: '' + headers: + apim-request-id: + - db4567e2-c0bb-47c5-b1ce-c92773197035 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:57 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '70' + x-request-id: + - db4567e2-c0bb-47c5-b1ce-c92773197035 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/5723db36-e8ca-46ed-902e-d1788645d835 + response: + body: + string: '' + headers: + apim-request-id: + - 7a4d6241-0582-4198-8470-d1c0e6ba1b4a + content-length: + - '0' + date: + - Fri, 11 Sep 2020 20:47:58 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '265' + x-request-id: + - 7a4d6241-0582-4198-8470-d1c0e6ba1b4a + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_top_n_severity_condition.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_top_n_severity_condition.yaml new file mode 100644 index 000000000000..67f617224d8f --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_top_n_severity_condition.yaml @@ -0,0 +1,385 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "topnup97102239", "granularityName": + "Daily", "metrics": [{"metricName": "cost"}, {"metricName": "revenue"}], "dataStartFrom": + "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": 0, "maxConcurrency": -1, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": + {"connectionString": "connectionstring", "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '697' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 914f426f-ab1d-42a7-8552-a4f3faae80df + content-length: + - '0' + date: + - Fri, 11 Sep 2020 22:06:43 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/0efea865-433c-4ad3-a296-5c351b138b18 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '639' + x-request-id: + - 914f426f-ab1d-42a7-8552-a4f3faae80df + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/0efea865-433c-4ad3-a296-5c351b138b18 + response: + body: + string: "{\"dataFeedId\":\"0efea865-433c-4ad3-a296-5c351b138b18\",\"dataFeedName\":\"topnup97102239\",\"metrics\":[{\"metricId\":\"f4a631ef-9f61-4af2-8297-f64b4b5a4763\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"e39e1fe4-a03b-4c49-937f-c7224b7deeb3\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-11T22:06:43Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 3cedecc1-b959-4ab1-8825-6027074f2275 + content-length: + - '1371' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 22:06:43 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '129' + x-request-id: + - 3cedecc1-b959-4ab1-8825-6027074f2275 + status: + code: 200 + message: OK +- request: + body: '{"name": "topnup97102239", "description": "testing", "metricId": "f4a631ef-9f61-4af2-8297-f64b4b5a4763", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '278' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 948960ed-b7d4-4a99-b549-884f737e7df3 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 22:06:43 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/3b20a76f-d4ab-4b8e-9f4c-71b528f8ed98 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '78' + x-request-id: + - 948960ed-b7d4-4a99-b549-884f737e7df3 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/3b20a76f-d4ab-4b8e-9f4c-71b528f8ed98 + response: + body: + string: '{"anomalyDetectionConfigurationId":"3b20a76f-d4ab-4b8e-9f4c-71b528f8ed98","name":"topnup97102239","description":"testing","metricId":"f4a631ef-9f61-4af2-8297-f64b4b5a4763","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - 7acdbef1-5d7c-457e-b481-522723d19d60 + content-length: + - '411' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 22:06:44 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '66' + x-request-id: + - 7acdbef1-5d7c-457e-b481-522723d19d60 + status: + code: 200 + message: OK +- request: + body: '{"name": "testalert97102239", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "3b20a76f-d4ab-4b8e-9f4c-71b528f8ed98", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": "High"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '322' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 0c69bf36-bb36-453c-a4cc-89a8a7272d4e + content-length: + - '0' + date: + - Fri, 11 Sep 2020 22:06:44 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/c4c0eaa1-4725-452a-83d8-75210b7de8bf + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '99' + x-request-id: + - 0c69bf36-bb36-453c-a4cc-89a8a7272d4e + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/c4c0eaa1-4725-452a-83d8-75210b7de8bf + response: + body: + string: '{"anomalyAlertingConfigurationId":"c4c0eaa1-4725-452a-83d8-75210b7de8bf","name":"testalert97102239","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"3b20a76f-d4ab-4b8e-9f4c-71b528f8ed98","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: + - 9ad03ea1-b8a0-475d-a45d-9223605ffbe5 + content-length: + - '417' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 22:06:44 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '88' + x-request-id: + - 9ad03ea1-b8a0-475d-a45d-9223605ffbe5 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/c4c0eaa1-4725-452a-83d8-75210b7de8bf + response: + body: + string: '' + headers: + apim-request-id: + - 67eaaa91-c43b-4bf4-ba4b-7599c39ca26d + content-length: + - '0' + date: + - Fri, 11 Sep 2020 22:06:45 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '89' + x-request-id: + - 67eaaa91-c43b-4bf4-ba4b-7599c39ca26d + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/c4c0eaa1-4725-452a-83d8-75210b7de8bf + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: e907a207-9391-49a7-997d-4fc599646586"}' + headers: + apim-request-id: + - e4a59b0a-abdf-45c9-8493-57eb9116bdb3 + content-length: + - '123' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 22:06:45 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '51' + x-request-id: + - e4a59b0a-abdf-45c9-8493-57eb9116bdb3 + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/3b20a76f-d4ab-4b8e-9f4c-71b528f8ed98 + response: + body: + string: '' + headers: + apim-request-id: + - dac3bbf8-ea09-4585-807f-13d7a23f1a5b + content-length: + - '0' + date: + - Fri, 11 Sep 2020 22:06:45 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '77' + x-request-id: + - dac3bbf8-ea09-4585-807f-13d7a23f1a5b + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/0efea865-433c-4ad3-a296-5c351b138b18 + response: + body: + string: '' + headers: + apim-request-id: + - 538b5cbd-3546-438c-acd1-eac89b9e3631 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 22:06:46 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '281' + x-request-id: + - 538b5cbd-3546-438c-acd1-eac89b9e3631 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_whole_series_alert_direction_both.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_whole_series_alert_direction_both.yaml new file mode 100644 index 000000000000..98d28ddd9427 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_whole_series_alert_direction_both.yaml @@ -0,0 +1,386 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "wholeseriesda3025c5", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '702' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - c6d85c3a-f257-441c-b27e-d7a75419e036 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:43 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/9a408175-5264-4b36-a569-da1f98fd0ae3 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '540' + x-request-id: + - c6d85c3a-f257-441c-b27e-d7a75419e036 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/9a408175-5264-4b36-a569-da1f98fd0ae3 + response: + body: + string: "{\"dataFeedId\":\"9a408175-5264-4b36-a569-da1f98fd0ae3\",\"dataFeedName\":\"wholeseriesda3025c5\",\"metrics\":[{\"metricId\":\"2791d4af-176a-4c59-9d9d-52a482b3bc6f\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"7c4a0e6f-0a70-4f2b-89ce-fafaea94a155\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-11T23:29:43Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - fe9bf31f-8a48-402f-8c8e-a6600bc813af + content-length: + - '1376' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:43 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '204' + x-request-id: + - fe9bf31f-8a48-402f-8c8e-a6600bc813af + status: + code: 200 + message: OK +- request: + body: '{"name": "wholeseriesda3025c5", "description": "testing", "metricId": "2791d4af-176a-4c59-9d9d-52a482b3bc6f", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - d6712a9d-1809-4069-a763-6d7f6236d86e + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:44 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/6d4a38c1-cda0-433a-9341-c41f9e535379 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '110' + x-request-id: + - d6712a9d-1809-4069-a763-6d7f6236d86e + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/6d4a38c1-cda0-433a-9341-c41f9e535379 + response: + body: + string: '{"anomalyDetectionConfigurationId":"6d4a38c1-cda0-433a-9341-c41f9e535379","name":"wholeseriesda3025c5","description":"testing","metricId":"2791d4af-176a-4c59-9d9d-52a482b3bc6f","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - e792ef10-d51e-40b9-bd24-dc19d4606512 + content-length: + - '416' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:44 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '160' + x-request-id: + - e792ef10-d51e-40b9-bd24-dc19d4606512 + status: + code: 200 + message: OK +- request: + body: '{"name": "testalertda3025c5", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "6d4a38c1-cda0-433a-9341-c41f9e535379", + "anomalyScopeType": "All", "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": + "Both", "metricId": "2791d4af-176a-4c59-9d9d-52a482b3bc6f"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '300' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 721f9c6f-bb31-44cf-9296-70d86b991d74 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:45 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/fc83e261-9f00-4400-a9b9-078d65e9c653 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '229' + x-request-id: + - 721f9c6f-bb31-44cf-9296-70d86b991d74 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/fc83e261-9f00-4400-a9b9-078d65e9c653 + response: + body: + string: '{"anomalyAlertingConfigurationId":"fc83e261-9f00-4400-a9b9-078d65e9c653","name":"testalertda3025c5","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"6d4a38c1-cda0-433a-9341-c41f9e535379","anomalyScopeType":"All","negationOperation":false,"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"2791d4af-176a-4c59-9d9d-52a482b3bc6f","triggerForMissing":false}}]}' + headers: + apim-request-id: + - e317f8ab-12d9-4378-a059-b1050d264f43 + content-length: + - '424' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:45 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '131' + x-request-id: + - e317f8ab-12d9-4378-a059-b1050d264f43 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/fc83e261-9f00-4400-a9b9-078d65e9c653 + response: + body: + string: '' + headers: + apim-request-id: + - 987489ee-4960-4c81-8024-b10764e1352c + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:45 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '164' + x-request-id: + - 987489ee-4960-4c81-8024-b10764e1352c + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/fc83e261-9f00-4400-a9b9-078d65e9c653 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: ac5d338e-0e4c-4f57-b5f1-ace946d4ff76"}' + headers: + apim-request-id: + - b10778d7-3830-45aa-b548-19f847187431 + content-length: + - '123' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:46 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '95' + x-request-id: + - b10778d7-3830-45aa-b548-19f847187431 + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/6d4a38c1-cda0-433a-9341-c41f9e535379 + response: + body: + string: '' + headers: + apim-request-id: + - 93258678-4f3e-4fa2-8c73-3769c543475a + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:46 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '112' + x-request-id: + - 93258678-4f3e-4fa2-8c73-3769c543475a + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/9a408175-5264-4b36-a569-da1f98fd0ae3 + response: + body: + string: '' + headers: + apim-request-id: + - d51111f1-0df7-4052-a299-32612640c65d + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:46 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '324' + x-request-id: + - d51111f1-0df7-4052-a299-32612640c65d + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_whole_series_alert_direction_down.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_whole_series_alert_direction_down.yaml new file mode 100644 index 000000000000..643dff45828c --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_whole_series_alert_direction_down.yaml @@ -0,0 +1,386 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "wholeseriesda4425d0", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '702' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - b70df322-8bcf-44ad-948a-22dc394b5424 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:47 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/4bfd3bf3-0c53-4503-9fbd-8bdee44f4c7f + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '455' + x-request-id: + - b70df322-8bcf-44ad-948a-22dc394b5424 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/4bfd3bf3-0c53-4503-9fbd-8bdee44f4c7f + response: + body: + string: "{\"dataFeedId\":\"4bfd3bf3-0c53-4503-9fbd-8bdee44f4c7f\",\"dataFeedName\":\"wholeseriesda4425d0\",\"metrics\":[{\"metricId\":\"80e14b71-492e-4d96-977c-9c13f0e68b0f\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"1e629640-d608-4140-9a15-f7cd252b1690\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-11T23:29:48Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - b25b8133-6f32-4601-85e8-5e01739386c1 + content-length: + - '1376' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:48 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '128' + x-request-id: + - b25b8133-6f32-4601-85e8-5e01739386c1 + status: + code: 200 + message: OK +- request: + body: '{"name": "wholeseriesda4425d0", "description": "testing", "metricId": "80e14b71-492e-4d96-977c-9c13f0e68b0f", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 01486278-05f8-4a7f-be99-d9a968822688 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:48 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bb3da8fb-929c-450f-b018-d22c59280d90 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '77' + x-request-id: + - 01486278-05f8-4a7f-be99-d9a968822688 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bb3da8fb-929c-450f-b018-d22c59280d90 + response: + body: + string: '{"anomalyDetectionConfigurationId":"bb3da8fb-929c-450f-b018-d22c59280d90","name":"wholeseriesda4425d0","description":"testing","metricId":"80e14b71-492e-4d96-977c-9c13f0e68b0f","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - c1272677-0da0-406a-acf9-ab1f530180a2 + content-length: + - '416' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:48 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '67' + x-request-id: + - c1272677-0da0-406a-acf9-ab1f530180a2 + status: + code: 200 + message: OK +- request: + body: '{"name": "testalertda4425d0", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "bb3da8fb-929c-450f-b018-d22c59280d90", + "anomalyScopeType": "All", "valueFilter": {"lower": 1.0, "direction": "Down", + "metricId": "80e14b71-492e-4d96-977c-9c13f0e68b0f"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '286' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 53ff0aa1-32e7-4d10-9692-6b4ac36c61d3 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:48 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/b08d3bd0-2667-45ce-a7f8-0c0c3a83092b + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '102' + x-request-id: + - 53ff0aa1-32e7-4d10-9692-6b4ac36c61d3 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/b08d3bd0-2667-45ce-a7f8-0c0c3a83092b + response: + body: + string: '{"anomalyAlertingConfigurationId":"b08d3bd0-2667-45ce-a7f8-0c0c3a83092b","name":"testalertda4425d0","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"bb3da8fb-929c-450f-b018-d22c59280d90","anomalyScopeType":"All","negationOperation":false,"valueFilter":{"lower":1.0,"direction":"Down","metricId":"80e14b71-492e-4d96-977c-9c13f0e68b0f","triggerForMissing":false}}]}' + headers: + apim-request-id: + - 0bb3f86a-ff84-49ab-9732-41603cb270f3 + content-length: + - '412' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:49 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '117' + x-request-id: + - 0bb3f86a-ff84-49ab-9732-41603cb270f3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/b08d3bd0-2667-45ce-a7f8-0c0c3a83092b + response: + body: + string: '' + headers: + apim-request-id: + - beca541c-f449-4d13-9b51-73d6e2fced97 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:49 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '117' + x-request-id: + - beca541c-f449-4d13-9b51-73d6e2fced97 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/b08d3bd0-2667-45ce-a7f8-0c0c3a83092b + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: b7e1f8dd-c762-4814-8460-6422c383a2c7"}' + headers: + apim-request-id: + - 3c2ce207-e693-45f7-8896-7708c8c68655 + content-length: + - '123' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:49 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '59' + x-request-id: + - 3c2ce207-e693-45f7-8896-7708c8c68655 + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/bb3da8fb-929c-450f-b018-d22c59280d90 + response: + body: + string: '' + headers: + apim-request-id: + - 5cbffcef-920c-4c24-9f2e-bfeac456939e + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:50 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '94' + x-request-id: + - 5cbffcef-920c-4c24-9f2e-bfeac456939e + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/4bfd3bf3-0c53-4503-9fbd-8bdee44f4c7f + response: + body: + string: '' + headers: + apim-request-id: + - a14532a9-0694-4a3e-bcd1-f07c2bc7b9e6 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:50 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '310' + x-request-id: + - a14532a9-0694-4a3e-bcd1-f07c2bc7b9e6 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_whole_series_alert_direction_up.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_whole_series_alert_direction_up.yaml new file mode 100644 index 000000000000..55d2051d0d54 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_whole_series_alert_direction_up.yaml @@ -0,0 +1,386 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "wholeseries8f3524fd", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '702' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 415ad344-f2af-4c55-87e5-a2bec32a5f68 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:52 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/9eb6c9c5-9af4-4e9f-8520-e8b4bbf08f85 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '361' + x-request-id: + - 415ad344-f2af-4c55-87e5-a2bec32a5f68 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/9eb6c9c5-9af4-4e9f-8520-e8b4bbf08f85 + response: + body: + string: "{\"dataFeedId\":\"9eb6c9c5-9af4-4e9f-8520-e8b4bbf08f85\",\"dataFeedName\":\"wholeseries8f3524fd\",\"metrics\":[{\"metricId\":\"89c8ed61-086b-46ae-9661-5ff8c8487dd5\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"bf321f4e-b45a-48ed-937f-0892e0088cf4\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-11T23:29:52Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - b6db32a6-e5bf-4c7a-a4ad-49e8f5f10b81 + content-length: + - '1376' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:52 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '138' + x-request-id: + - b6db32a6-e5bf-4c7a-a4ad-49e8f5f10b81 + status: + code: 200 + message: OK +- request: + body: '{"name": "wholeseries8f3524fd", "description": "testing", "metricId": "89c8ed61-086b-46ae-9661-5ff8c8487dd5", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - a330f8fd-0bcf-4a8d-ab39-ad0a5b842d1f + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:52 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/8017d03d-3d1a-47a3-bf7d-48bf3accbd9a + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '81' + x-request-id: + - a330f8fd-0bcf-4a8d-ab39-ad0a5b842d1f + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/8017d03d-3d1a-47a3-bf7d-48bf3accbd9a + response: + body: + string: '{"anomalyDetectionConfigurationId":"8017d03d-3d1a-47a3-bf7d-48bf3accbd9a","name":"wholeseries8f3524fd","description":"testing","metricId":"89c8ed61-086b-46ae-9661-5ff8c8487dd5","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - c0d37f1c-2598-4c08-bda7-d1e9b772f1de + content-length: + - '416' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:52 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '69' + x-request-id: + - c0d37f1c-2598-4c08-bda7-d1e9b772f1de + status: + code: 200 + message: OK +- request: + body: '{"name": "testalert8f3524fd", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "8017d03d-3d1a-47a3-bf7d-48bf3accbd9a", + "anomalyScopeType": "All", "valueFilter": {"upper": 5.0, "direction": "Up", + "metricId": "89c8ed61-086b-46ae-9661-5ff8c8487dd5"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '284' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 2232dc1d-c3f3-4c4d-a633-a2f2d90a8f2d + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:53 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/80e426d6-2c4f-4bad-a8de-919ee00b429b + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '116' + x-request-id: + - 2232dc1d-c3f3-4c4d-a633-a2f2d90a8f2d + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/80e426d6-2c4f-4bad-a8de-919ee00b429b + response: + body: + string: '{"anomalyAlertingConfigurationId":"80e426d6-2c4f-4bad-a8de-919ee00b429b","name":"testalert8f3524fd","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"8017d03d-3d1a-47a3-bf7d-48bf3accbd9a","anomalyScopeType":"All","negationOperation":false,"valueFilter":{"upper":5.0,"direction":"Up","metricId":"89c8ed61-086b-46ae-9661-5ff8c8487dd5","triggerForMissing":false}}]}' + headers: + apim-request-id: + - 38605574-2505-4e6f-aae7-953438a3a7b2 + content-length: + - '410' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:53 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '64' + x-request-id: + - 38605574-2505-4e6f-aae7-953438a3a7b2 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/80e426d6-2c4f-4bad-a8de-919ee00b429b + response: + body: + string: '' + headers: + apim-request-id: + - 9e064243-ba2b-4b79-b806-55566afb77d2 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:53 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '112' + x-request-id: + - 9e064243-ba2b-4b79-b806-55566afb77d2 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/80e426d6-2c4f-4bad-a8de-919ee00b429b + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: 89297214-d8e3-41a9-a274-9857488e9f95"}' + headers: + apim-request-id: + - e8e7e56c-1171-4254-b5d4-65f2987e8afe + content-length: + - '123' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:54 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '54' + x-request-id: + - e8e7e56c-1171-4254-b5d4-65f2987e8afe + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/8017d03d-3d1a-47a3-bf7d-48bf3accbd9a + response: + body: + string: '' + headers: + apim-request-id: + - 50f67908-54bd-4ce3-a2da-9db9ebce853f + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:54 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '91' + x-request-id: + - 50f67908-54bd-4ce3-a2da-9db9ebce853f + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/9eb6c9c5-9af4-4e9f-8520-e8b4bbf08f85 + response: + body: + string: '' + headers: + apim-request-id: + - b0379a85-aa19-467f-a2c8-74ee72f05bae + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:54 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '262' + x-request-id: + - b0379a85-aa19-467f-a2c8-74ee72f05bae + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_whole_series_severity_condition.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_whole_series_severity_condition.yaml new file mode 100644 index 000000000000..ad7c0b0e4c22 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_create_anomaly_alert_config_whole_series_severity_condition.yaml @@ -0,0 +1,385 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "topnup91772522", "granularityName": + "Daily", "metrics": [{"metricName": "cost"}, {"metricName": "revenue"}], "dataStartFrom": + "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": 0, "maxConcurrency": -1, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": + {"connectionString": "connectionstring", "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '697' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 92a70a11-f112-4e49-8988-14b2ccc50874 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:56 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/88c0a1b0-630f-447b-8402-fb7cc2170417 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '610' + x-request-id: + - 92a70a11-f112-4e49-8988-14b2ccc50874 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/88c0a1b0-630f-447b-8402-fb7cc2170417 + response: + body: + string: "{\"dataFeedId\":\"88c0a1b0-630f-447b-8402-fb7cc2170417\",\"dataFeedName\":\"topnup91772522\",\"metrics\":[{\"metricId\":\"5fc3e3c9-629f-4fc3-aaa7-4f13043377b7\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"d7f430eb-8dac-477d-b6f0-634fb57036f6\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-11T23:29:57Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - f9093155-fe1e-41ef-ba86-6edc093e608d + content-length: + - '1371' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:56 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '120' + x-request-id: + - f9093155-fe1e-41ef-ba86-6edc093e608d + status: + code: 200 + message: OK +- request: + body: '{"name": "topnup91772522", "description": "testing", "metricId": "5fc3e3c9-629f-4fc3-aaa7-4f13043377b7", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '278' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 08764f13-497a-43a5-9a1d-4b47e3c58278 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:57 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/ada5d6ab-bb0b-40a2-bb75-030872540716 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '76' + x-request-id: + - 08764f13-497a-43a5-9a1d-4b47e3c58278 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/ada5d6ab-bb0b-40a2-bb75-030872540716 + response: + body: + string: '{"anomalyDetectionConfigurationId":"ada5d6ab-bb0b-40a2-bb75-030872540716","name":"topnup91772522","description":"testing","metricId":"5fc3e3c9-629f-4fc3-aaa7-4f13043377b7","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - ad221d68-ed48-41b3-b104-4f2495a8fc42 + content-length: + - '411' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:57 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '71' + x-request-id: + - ad221d68-ed48-41b3-b104-4f2495a8fc42 + status: + code: 200 + message: OK +- request: + body: '{"name": "testalert91772522", "hookIds": [], "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "ada5d6ab-bb0b-40a2-bb75-030872540716", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '257' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 8eb2e32a-7b9c-4903-8c6d-5567e817a410 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:57 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4e637c5a-4e91-476b-9cab-ce7796a07b68 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '96' + x-request-id: + - 8eb2e32a-7b9c-4903-8c6d-5567e817a410 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4e637c5a-4e91-476b-9cab-ce7796a07b68 + response: + body: + string: '{"anomalyAlertingConfigurationId":"4e637c5a-4e91-476b-9cab-ce7796a07b68","name":"testalert91772522","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"ada5d6ab-bb0b-40a2-bb75-030872540716","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: + - c2d6b413-2779-4125-b8b4-14cbbb1558dc + content-length: + - '359' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:58 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '74' + x-request-id: + - c2d6b413-2779-4125-b8b4-14cbbb1558dc + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4e637c5a-4e91-476b-9cab-ce7796a07b68 + response: + body: + string: '' + headers: + apim-request-id: + - dda16618-4fe3-4ebb-8978-d51c788e6f61 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:58 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '88' + x-request-id: + - dda16618-4fe3-4ebb-8978-d51c788e6f61 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4e637c5a-4e91-476b-9cab-ce7796a07b68 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyAlertingConfiguration. + TraceId: f0330599-0b93-49cc-a973-e96995f3ce83"}' + headers: + apim-request-id: + - 9b051ff1-3d40-488b-94c9-4de9a2cfc624 + content-length: + - '123' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 23:29:58 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '47' + x-request-id: + - 9b051ff1-3d40-488b-94c9-4de9a2cfc624 + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/ada5d6ab-bb0b-40a2-bb75-030872540716 + response: + body: + string: '' + headers: + apim-request-id: + - 6dccab5b-2bb7-45e0-b98a-97944e7a66be + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:59 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '77' + x-request-id: + - 6dccab5b-2bb7-45e0-b98a-97944e7a66be + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/88c0a1b0-630f-447b-8402-fb7cc2170417 + response: + body: + string: '' + headers: + apim-request-id: + - 22334e0f-54d2-434e-9ab7-81c9824e1b5c + content-length: + - '0' + date: + - Fri, 11 Sep 2020 23:29:59 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '260' + x-request-id: + - 22334e0f-54d2-434e-9ab7-81c9824e1b5c + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_list_anomaly_alert_configs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_list_anomaly_alert_configs.yaml new file mode 100644 index 000000000000..4e28030f8803 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_list_anomaly_alert_configs.yaml @@ -0,0 +1,38 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/alert/anomaly/configurations + response: + body: + string: '{"value":[{"anomalyAlertingConfigurationId":"08318302-6006-4019-9afc-975bc63ee566","name":"test_alert_configuration","description":"updated_description","hookIds":["e880ea6b-517e-43b7-a9ea-633583096be7"],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false}]},{"anomalyAlertingConfigurationId":"ce734b14-bf83-4871-97ee-60c273938ec3","name":"test_alert_configuration","description":"testing_alert_configuration_description","hookIds":["e880ea6b-517e-43b7-a9ea-633583096be7"],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false}]},{"anomalyAlertingConfigurationId":"7b75aa62-b97d-42d4-904b-afc131714c6b","name":"test_alert_configuration","description":"testing_alert_configuration_description","crossMetricsOperator":"XOR","hookIds":["e880ea6b-517e-43b7-a9ea-633583096be7"],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false},{"anomalyDetectionConfigurationId":"bd309211-64b5-4a7a-bb81-a2789599c526","anomalyScopeType":"All","negationOperation":false}]},{"anomalyAlertingConfigurationId":"7f825107-f40c-44f7-af53-56192aa059b3","name":"test_alert_configuration","description":"updated_description","hookIds":["e880ea6b-517e-43b7-a9ea-633583096be7"],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false}]},{"anomalyAlertingConfigurationId":"7546afba-01e5-49dc-952e-af32b08e75ac","name":"test_alert_configuration","description":"testing_alert_configuration_description","crossMetricsOperator":"XOR","hookIds":["e880ea6b-517e-43b7-a9ea-633583096be7"],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false},{"anomalyDetectionConfigurationId":"bd309211-64b5-4a7a-bb81-a2789599c526","anomalyScopeType":"All","negationOperation":false}]},{"anomalyAlertingConfigurationId":"0d1dfaf4-6012-4cfd-83e3-dd020f4692be","name":"test_alert_configuration","description":"updated_description","hookIds":["e880ea6b-517e-43b7-a9ea-633583096be7"],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false}]},{"anomalyAlertingConfigurationId":"ff3014a0-bbbb-41ec-a637-677e77b81299","name":"test_alert_setting","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Medium","maxAlertSeverity":"High"},"snoozeFilter":{"autoSnooze":0,"snoozeScope":"Series","onlyForSuccessive":true}}]},{"anomalyAlertingConfigurationId":"00674295-7529-42f2-b91c-942a36e69370","name":"test_alert_configuration","description":"testing_alert_configuration_description","hookIds":["e880ea6b-517e-43b7-a9ea-633583096be7"],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"snoozeFilter":{"autoSnooze":0,"snoozeScope":"Series","onlyForSuccessive":true}}]}]}' + headers: + apim-request-id: + - 0ac90e17-c8d7-4b85-96d0-f050e22c8c57 + content-length: + - '3473' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 01:44:42 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '214' + x-request-id: + - 0ac90e17-c8d7-4b85-96d0-f050e22c8c57 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_update_anomaly_alert_by_resetting_properties.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_update_anomaly_alert_by_resetting_properties.yaml new file mode 100644 index 000000000000..e0e6ee203388 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_update_anomaly_alert_by_resetting_properties.yaml @@ -0,0 +1,360 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "alertupdate95b61f0e", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - f2452a11-6749-433d-8019-868439af6eff + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:30:26 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/d5289f85-ca65-4f2f-a7bb-1aef50f3679f + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '474' + x-request-id: + - f2452a11-6749-433d-8019-868439af6eff + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/d5289f85-ca65-4f2f-a7bb-1aef50f3679f + response: + body: + string: "{\"dataFeedId\":\"d5289f85-ca65-4f2f-a7bb-1aef50f3679f\",\"dataFeedName\":\"alertupdate95b61f0e\",\"metrics\":[{\"metricId\":\"5305e42f-79fe-4eeb-860f-0b67c308dd60\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"dce8ca69-300e-4dca-8019-b838a3aa53ca\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T19:30:27Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - d6fc3b78-336a-4d90-bcb1-3486760b91bd + content-length: + - '1492' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:30:32 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5256' + x-request-id: + - d6fc3b78-336a-4d90-bcb1-3486760b91bd + status: + code: 200 + message: OK +- request: + body: '{"name": "alertupdate95b61f0e", "description": "testing", "metricId": "5305e42f-79fe-4eeb-860f-0b67c308dd60", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 21274abc-b5da-43c2-9d28-d60e4ca3fcbd + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:30:32 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/7ebc5555-56aa-4db5-9181-312357bb43cd + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '88' + x-request-id: + - 21274abc-b5da-43c2-9d28-d60e4ca3fcbd + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/7ebc5555-56aa-4db5-9181-312357bb43cd + response: + body: + string: '{"anomalyDetectionConfigurationId":"7ebc5555-56aa-4db5-9181-312357bb43cd","name":"alertupdate95b61f0e","description":"testing","metricId":"5305e42f-79fe-4eeb-860f-0b67c308dd60","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - 44b34ec4-17bf-473e-9534-8f4065fbfdd9 + content-length: + - '416' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:30:33 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '212' + x-request-id: + - 44b34ec4-17bf-473e-9534-8f4065fbfdd9 + status: + code: 200 + message: OK +- request: + body: '{"name": "alertupdate95b61f0e", "crossMetricsOperator": "AND", "hookIds": + [], "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": "7ebc5555-56aa-4db5-9181-312357bb43cd", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", "metricId": + "5305e42f-79fe-4eeb-860f-0b67c308dd60"}}, {"anomalyDetectionConfigurationId": + "7ebc5555-56aa-4db5-9181-312357bb43cd", "anomalyScopeType": "Dimension", "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}}, {"anomalyDetectionConfigurationId": "7ebc5555-56aa-4db5-9181-312357bb43cd", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '824' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - f52b6895-247e-4d40-9db5-ab1f9bac7215 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:30:33 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/da8f7a99-435a-4ccd-a340-41b07e383fdd + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '164' + x-request-id: + - f52b6895-247e-4d40-9db5-ab1f9bac7215 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/da8f7a99-435a-4ccd-a340-41b07e383fdd + response: + body: + string: '{"anomalyAlertingConfigurationId":"da8f7a99-435a-4ccd-a340-41b07e383fdd","name":"alertupdate95b61f0e","description":"","crossMetricsOperator":"AND","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"7ebc5555-56aa-4db5-9181-312357bb43cd","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"5305e42f-79fe-4eeb-860f-0b67c308dd60","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"7ebc5555-56aa-4db5-9181-312357bb43cd","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}},{"anomalyDetectionConfigurationId":"7ebc5555-56aa-4db5-9181-312357bb43cd","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: + - f0f0403a-7a37-4fad-ad98-819b7800931d + content-length: + - '969' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:30:33 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '69' + x-request-id: + - f0f0403a-7a37-4fad-ad98-819b7800931d + status: + code: 200 + message: OK +- request: + body: '{"name": "reset", "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": + "7ebc5555-56aa-4db5-9181-312357bb43cd", "anomalyScopeType": "TopN", "topNAnomalyScope": + {"top": 5, "period": 10, "minTopCount": 9}}], "description": ""}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '239' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/da8f7a99-435a-4ccd-a340-41b07e383fdd + response: + body: + string: '' + headers: + apim-request-id: + - 55546e6e-9117-4e89-b32d-12f80abdf96c + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:30:39 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '117' + x-request-id: + - 55546e6e-9117-4e89-b32d-12f80abdf96c + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/da8f7a99-435a-4ccd-a340-41b07e383fdd + response: + body: + string: '{"anomalyAlertingConfigurationId":"da8f7a99-435a-4ccd-a340-41b07e383fdd","name":"reset","description":"","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"7ebc5555-56aa-4db5-9181-312357bb43cd","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9}}]}' + headers: + apim-request-id: + - bcd18642-4040-498e-aef5-4c1b7a5c4f7e + content-length: + - '335' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:30:43 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '81' + x-request-id: + - bcd18642-4040-498e-aef5-4c1b7a5c4f7e + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/d5289f85-ca65-4f2f-a7bb-1aef50f3679f + response: + body: + string: '' + headers: + apim-request-id: + - dbd8b030-b3b0-492a-be7b-ea1b2004f4ec + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:32:19 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '671' + x-request-id: + - dbd8b030-b3b0-492a-be7b-ea1b2004f4ec + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_update_anomaly_alert_config_with_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_update_anomaly_alert_config_with_kwargs.yaml new file mode 100644 index 000000000000..c028c2b0f9fb --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_update_anomaly_alert_config_with_kwargs.yaml @@ -0,0 +1,371 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "alertupdatefd741cd2", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - f11c412c-0b07-40bc-8bb1-d3d9ed5ba041 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:20:43 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/3accdb16-d0ca-4036-ac0b-21f171fe2c59 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '1947' + x-request-id: + - f11c412c-0b07-40bc-8bb1-d3d9ed5ba041 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/3accdb16-d0ca-4036-ac0b-21f171fe2c59 + response: + body: + string: "{\"dataFeedId\":\"3accdb16-d0ca-4036-ac0b-21f171fe2c59\",\"dataFeedName\":\"alertupdatefd741cd2\",\"metrics\":[{\"metricId\":\"c5550c58-3e42-4569-9ace-a897ce4d5b54\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"ce495405-074e-43f6-b6d5-3be37b7f5aff\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T19:20:43Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 46ce9795-aaed-4288-a35d-8caf2d038241 + content-length: + - '1492' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:20:43 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '214' + x-request-id: + - 46ce9795-aaed-4288-a35d-8caf2d038241 + status: + code: 200 + message: OK +- request: + body: '{"name": "alertupdatefd741cd2", "description": "testing", "metricId": "c5550c58-3e42-4569-9ace-a897ce4d5b54", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 492ff9ec-7f54-4fcf-95c3-9ac21c42bfa6 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:20:48 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/d79884a1-eb9d-4bb7-be55-02c89a89f45c + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5154' + x-request-id: + - 492ff9ec-7f54-4fcf-95c3-9ac21c42bfa6 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/d79884a1-eb9d-4bb7-be55-02c89a89f45c + response: + body: + string: '{"anomalyDetectionConfigurationId":"d79884a1-eb9d-4bb7-be55-02c89a89f45c","name":"alertupdatefd741cd2","description":"testing","metricId":"c5550c58-3e42-4569-9ace-a897ce4d5b54","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - 9c9807b6-c1ce-40e0-aac6-1cacd5052451 + content-length: + - '416' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:20:49 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '71' + x-request-id: + - 9c9807b6-c1ce-40e0-aac6-1cacd5052451 + status: + code: 200 + message: OK +- request: + body: '{"name": "alertupdatefd741cd2", "crossMetricsOperator": "AND", "hookIds": + [], "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": "d79884a1-eb9d-4bb7-be55-02c89a89f45c", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", "metricId": + "c5550c58-3e42-4569-9ace-a897ce4d5b54"}}, {"anomalyDetectionConfigurationId": + "d79884a1-eb9d-4bb7-be55-02c89a89f45c", "anomalyScopeType": "Dimension", "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}}, {"anomalyDetectionConfigurationId": "d79884a1-eb9d-4bb7-be55-02c89a89f45c", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '824' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 5e70505b-fbbc-4cae-9a9d-6fe3edddddf8 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:20:49 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/a298cffb-82bb-41ba-a09b-b4456e05a602 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '182' + x-request-id: + - 5e70505b-fbbc-4cae-9a9d-6fe3edddddf8 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/a298cffb-82bb-41ba-a09b-b4456e05a602 + response: + body: + string: '{"anomalyAlertingConfigurationId":"a298cffb-82bb-41ba-a09b-b4456e05a602","name":"alertupdatefd741cd2","description":"","crossMetricsOperator":"AND","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"d79884a1-eb9d-4bb7-be55-02c89a89f45c","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"c5550c58-3e42-4569-9ace-a897ce4d5b54","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"d79884a1-eb9d-4bb7-be55-02c89a89f45c","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}},{"anomalyDetectionConfigurationId":"d79884a1-eb9d-4bb7-be55-02c89a89f45c","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: + - d81bb344-d7d6-4757-a3d5-18392513a5c9 + content-length: + - '969' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:20:49 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '71' + x-request-id: + - d81bb344-d7d6-4757-a3d5-18392513a5c9 + status: + code: 200 + message: OK +- request: + body: '{"name": "update", "crossMetricsOperator": "OR", "metricAlertingConfigurations": + [{"anomalyDetectionConfigurationId": "d79884a1-eb9d-4bb7-be55-02c89a89f45c", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": "High"}, + "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", "metricId": + "c5550c58-3e42-4569-9ace-a897ce4d5b54"}}, {"anomalyDetectionConfigurationId": + "d79884a1-eb9d-4bb7-be55-02c89a89f45c", "anomalyScopeType": "Dimension", "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}, "valueFilter": {"lower": 1.0, "upper": 5.0, + "direction": "Both"}}, {"anomalyDetectionConfigurationId": "d79884a1-eb9d-4bb7-be55-02c89a89f45c", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both"}}], + "description": "update description"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1039' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/a298cffb-82bb-41ba-a09b-b4456e05a602 + response: + body: + string: '' + headers: + apim-request-id: + - ea034fa7-2da9-40c3-a93f-5c5bbc343e78 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:20:50 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '189' + x-request-id: + - ea034fa7-2da9-40c3-a93f-5c5bbc343e78 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/a298cffb-82bb-41ba-a09b-b4456e05a602 + response: + body: + string: '{"anomalyAlertingConfigurationId":"a298cffb-82bb-41ba-a09b-b4456e05a602","name":"update","description":"update + description","crossMetricsOperator":"OR","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"d79884a1-eb9d-4bb7-be55-02c89a89f45c","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"c5550c58-3e42-4569-9ace-a897ce4d5b54","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"d79884a1-eb9d-4bb7-be55-02c89a89f45c","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"d79884a1-eb9d-4bb7-be55-02c89a89f45c","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","triggerForMissing":false}}]}' + headers: + apim-request-id: + - 9297f87a-2829-4886-8f82-801e0f99b6ad + content-length: + - '1213' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:20:50 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '78' + x-request-id: + - 9297f87a-2829-4886-8f82-801e0f99b6ad + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/3accdb16-d0ca-4036-ac0b-21f171fe2c59 + response: + body: + string: '' + headers: + apim-request-id: + - 5a7fd539-a936-431f-8d35-bda589a18140 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:20:50 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '291' + x-request-id: + - 5a7fd539-a936-431f-8d35-bda589a18140 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_update_anomaly_alert_config_with_model.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_update_anomaly_alert_config_with_model.yaml new file mode 100644 index 000000000000..bf80633eefbe --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_update_anomaly_alert_config_with_model.yaml @@ -0,0 +1,372 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "alertupdatee0801c54", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 5518b5fd-15be-4f1e-a769-3db0640a6b09 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:06:39 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/7f3c485f-bcc3-4533-a584-c8f8a7984f0a + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '565' + x-request-id: + - 5518b5fd-15be-4f1e-a769-3db0640a6b09 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/7f3c485f-bcc3-4533-a584-c8f8a7984f0a + response: + body: + string: "{\"dataFeedId\":\"7f3c485f-bcc3-4533-a584-c8f8a7984f0a\",\"dataFeedName\":\"alertupdatee0801c54\",\"metrics\":[{\"metricId\":\"ac329059-491f-448b-aeb8-57c1cc9cd2be\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"318e852b-99fc-4f8e-ae89-c086b4c2b542\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T19:06:40Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - a22cba08-4950-4846-a915-e07585ef51c8 + content-length: + - '1492' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:06:40 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '309' + x-request-id: + - a22cba08-4950-4846-a915-e07585ef51c8 + status: + code: 200 + message: OK +- request: + body: '{"name": "alertupdatee0801c54", "description": "testing", "metricId": "ac329059-491f-448b-aeb8-57c1cc9cd2be", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - e32b8dbc-bef2-4a5f-81c9-13f19b08a8db + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:06:47 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/04e6402c-87b2-47b4-bdef-e3ff6aed3030 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '7213' + x-request-id: + - e32b8dbc-bef2-4a5f-81c9-13f19b08a8db + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/04e6402c-87b2-47b4-bdef-e3ff6aed3030 + response: + body: + string: '{"anomalyDetectionConfigurationId":"04e6402c-87b2-47b4-bdef-e3ff6aed3030","name":"alertupdatee0801c54","description":"testing","metricId":"ac329059-491f-448b-aeb8-57c1cc9cd2be","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - 2a028231-dc71-4804-81cf-654ca7bf5afc + content-length: + - '416' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:06:48 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '72' + x-request-id: + - 2a028231-dc71-4804-81cf-654ca7bf5afc + status: + code: 200 + message: OK +- request: + body: '{"name": "alertupdatee0801c54", "crossMetricsOperator": "AND", "hookIds": + [], "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": "04e6402c-87b2-47b4-bdef-e3ff6aed3030", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", "metricId": + "ac329059-491f-448b-aeb8-57c1cc9cd2be"}}, {"anomalyDetectionConfigurationId": + "04e6402c-87b2-47b4-bdef-e3ff6aed3030", "anomalyScopeType": "Dimension", "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}}, {"anomalyDetectionConfigurationId": "04e6402c-87b2-47b4-bdef-e3ff6aed3030", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '824' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 3c9a2654-7bd9-4259-9709-c72f7daec183 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:06:48 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4fd12908-2cc9-4969-928b-08fa5051ad34 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '243' + x-request-id: + - 3c9a2654-7bd9-4259-9709-c72f7daec183 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4fd12908-2cc9-4969-928b-08fa5051ad34 + response: + body: + string: '{"anomalyAlertingConfigurationId":"4fd12908-2cc9-4969-928b-08fa5051ad34","name":"alertupdatee0801c54","description":"","crossMetricsOperator":"AND","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"04e6402c-87b2-47b4-bdef-e3ff6aed3030","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"ac329059-491f-448b-aeb8-57c1cc9cd2be","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"04e6402c-87b2-47b4-bdef-e3ff6aed3030","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}},{"anomalyDetectionConfigurationId":"04e6402c-87b2-47b4-bdef-e3ff6aed3030","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: + - e39c4a79-8996-474e-9ea9-1dad4462528d + content-length: + - '969' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:06:48 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '75' + x-request-id: + - e39c4a79-8996-474e-9ea9-1dad4462528d + status: + code: 200 + message: OK +- request: + body: '{"name": "update", "description": "update description", "crossMetricsOperator": + "OR", "hookIds": [], "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": + "04e6402c-87b2-47b4-bdef-e3ff6aed3030", "anomalyScopeType": "TopN", "negationOperation": + false, "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": 9}, "severityFilter": + {"minAlertSeverity": "Low", "maxAlertSeverity": "High"}, "valueFilter": {"lower": + 1.0, "upper": 5.0, "direction": "Both", "metricId": "ac329059-491f-448b-aeb8-57c1cc9cd2be", + "triggerForMissing": false}}, {"anomalyDetectionConfigurationId": "04e6402c-87b2-47b4-bdef-e3ff6aed3030", + "anomalyScopeType": "Dimension", "negationOperation": false, "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}, "valueFilter": {"lower": 1.0, "upper": 5.0, + "direction": "Both"}}, {"anomalyDetectionConfigurationId": "04e6402c-87b2-47b4-bdef-e3ff6aed3030", + "anomalyScopeType": "All", "negationOperation": false, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}, "valueFilter": {"lower": 1.0, "upper": 5.0, + "direction": "Both"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1166' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4fd12908-2cc9-4969-928b-08fa5051ad34 + response: + body: + string: '' + headers: + apim-request-id: + - 7a2a6e70-e496-48cd-bfbf-db7a69db12b7 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:07:03 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '212' + x-request-id: + - 7a2a6e70-e496-48cd-bfbf-db7a69db12b7 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/4fd12908-2cc9-4969-928b-08fa5051ad34 + response: + body: + string: '{"anomalyAlertingConfigurationId":"4fd12908-2cc9-4969-928b-08fa5051ad34","name":"update","description":"update + description","crossMetricsOperator":"OR","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"04e6402c-87b2-47b4-bdef-e3ff6aed3030","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"ac329059-491f-448b-aeb8-57c1cc9cd2be","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"04e6402c-87b2-47b4-bdef-e3ff6aed3030","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"04e6402c-87b2-47b4-bdef-e3ff6aed3030","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","triggerForMissing":false}}]}' + headers: + apim-request-id: + - 523c0884-be3e-4f83-926c-8ebf7a8b72a2 + content-length: + - '1213' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:07:11 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '79' + x-request-id: + - 523c0884-be3e-4f83-926c-8ebf7a8b72a2 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/7f3c485f-bcc3-4533-a584-c8f8a7984f0a + response: + body: + string: '' + headers: + apim-request-id: + - e37b6940-1e94-4668-afef-416bab5d1ef6 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:10:52 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '743' + x-request-id: + - e37b6940-1e94-4668-afef-416bab5d1ef6 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_update_anomaly_alert_config_with_model_and_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_update_anomaly_alert_config_with_model_and_kwargs.yaml new file mode 100644 index 000000000000..b17044864ee9 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_anomaly_alert_config.test_update_anomaly_alert_config_with_model_and_kwargs.yaml @@ -0,0 +1,369 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "alertupdate32a020d4", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '774' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 5b32fa46-b9ed-47e1-944c-a57c172e1178 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:22:24 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/440aafd6-1841-4705-a786-73b7c7834b71 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '1290' + x-request-id: + - 5b32fa46-b9ed-47e1-944c-a57c172e1178 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/440aafd6-1841-4705-a786-73b7c7834b71 + response: + body: + string: "{\"dataFeedId\":\"440aafd6-1841-4705-a786-73b7c7834b71\",\"dataFeedName\":\"alertupdate32a020d4\",\"metrics\":[{\"metricId\":\"9a558ae1-b035-4469-8a95-bdc71e123dae\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"d06019ae-c529-4c94-9357-d73e709a9f5d\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T19:22:24Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 88cce88a-49e1-4e08-a005-e9e86cfc2ba5 + content-length: + - '1492' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:22:24 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '136' + x-request-id: + - 88cce88a-49e1-4e08-a005-e9e86cfc2ba5 + status: + code: 200 + message: OK +- request: + body: '{"name": "alertupdate32a020d4", "description": "testing", "metricId": "9a558ae1-b035-4469-8a95-bdc71e123dae", + "wholeMetricConfiguration": {"smartDetectionCondition": {"sensitivity": 50.0, + "anomalyDetectorDirection": "Both", "suppressCondition": {"minNumber": 50, "minRatio": + 50.0}}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '283' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - e6570499-0018-498c-b63c-918a88fbcfa2 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:22:25 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/e73c31b3-b8ea-405e-8313-848e692698d7 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '100' + x-request-id: + - e6570499-0018-498c-b63c-918a88fbcfa2 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/e73c31b3-b8ea-405e-8313-848e692698d7 + response: + body: + string: '{"anomalyDetectionConfigurationId":"e73c31b3-b8ea-405e-8313-848e692698d7","name":"alertupdate32a020d4","description":"testing","metricId":"9a558ae1-b035-4469-8a95-bdc71e123dae","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - c08bc78a-8e91-4144-bca0-9f0d1428cce4 + content-length: + - '416' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:22:25 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '72' + x-request-id: + - c08bc78a-8e91-4144-bca0-9f0d1428cce4 + status: + code: 200 + message: OK +- request: + body: '{"name": "alertupdate32a020d4", "crossMetricsOperator": "AND", "hookIds": + [], "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": "e73c31b3-b8ea-405e-8313-848e692698d7", + "anomalyScopeType": "TopN", "topNAnomalyScope": {"top": 5, "period": 10, "minTopCount": + 9}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both", "metricId": + "9a558ae1-b035-4469-8a95-bdc71e123dae"}}, {"anomalyDetectionConfigurationId": + "e73c31b3-b8ea-405e-8313-848e692698d7", "anomalyScopeType": "Dimension", "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}}, {"anomalyDetectionConfigurationId": "e73c31b3-b8ea-405e-8313-848e692698d7", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '824' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 16f75f86-fa69-4435-8fd5-d3bb5633c95a + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:22:25 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/ff88739f-9653-42a1-adb7-e8e495454ce5 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '173' + x-request-id: + - 16f75f86-fa69-4435-8fd5-d3bb5633c95a + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/ff88739f-9653-42a1-adb7-e8e495454ce5 + response: + body: + string: '{"anomalyAlertingConfigurationId":"ff88739f-9653-42a1-adb7-e8e495454ce5","name":"alertupdate32a020d4","description":"","crossMetricsOperator":"AND","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"e73c31b3-b8ea-405e-8313-848e692698d7","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"9a558ae1-b035-4469-8a95-bdc71e123dae","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"e73c31b3-b8ea-405e-8313-848e692698d7","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}},{"anomalyDetectionConfigurationId":"e73c31b3-b8ea-405e-8313-848e692698d7","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"}}]}' + headers: + apim-request-id: + - 9f4d4b42-92df-4812-a7fe-e760322fe541 + content-length: + - '969' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:22:26 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '74' + x-request-id: + - 9f4d4b42-92df-4812-a7fe-e760322fe541 + status: + code: 200 + message: OK +- request: + body: '{"name": "updateMe", "description": "updateMe", "crossMetricsOperator": + "OR", "hookIds": [], "metricAlertingConfigurations": [{"anomalyDetectionConfigurationId": + "e73c31b3-b8ea-405e-8313-848e692698d7", "anomalyScopeType": "TopN", "topNAnomalyScope": + {"top": 5, "period": 10, "minTopCount": 9}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}, "valueFilter": {"lower": 1.0, "upper": 5.0, + "direction": "Both", "metricId": "9a558ae1-b035-4469-8a95-bdc71e123dae"}}, {"anomalyDetectionConfigurationId": + "e73c31b3-b8ea-405e-8313-848e692698d7", "anomalyScopeType": "Dimension", "dimensionAnomalyScope": + {"dimension": {"city": "Shenzhen"}}, "severityFilter": {"minAlertSeverity": + "Low", "maxAlertSeverity": "High"}, "valueFilter": {"lower": 1.0, "upper": 5.0, + "direction": "Both"}}, {"anomalyDetectionConfigurationId": "e73c31b3-b8ea-405e-8313-848e692698d7", + "anomalyScopeType": "All", "severityFilter": {"minAlertSeverity": "Low", "maxAlertSeverity": + "High"}, "valueFilter": {"lower": 1.0, "upper": 5.0, "direction": "Both"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1046' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/ff88739f-9653-42a1-adb7-e8e495454ce5 + response: + body: + string: '' + headers: + apim-request-id: + - 634e4774-b3e0-43d0-87b4-6bea18f04f9a + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:22:26 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '200' + x-request-id: + - 634e4774-b3e0-43d0-87b4-6bea18f04f9a + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/ff88739f-9653-42a1-adb7-e8e495454ce5 + response: + body: + string: '{"anomalyAlertingConfigurationId":"ff88739f-9653-42a1-adb7-e8e495454ce5","name":"updateMe","description":"updateMe","crossMetricsOperator":"OR","hookIds":[],"metricAlertingConfigurations":[{"anomalyDetectionConfigurationId":"e73c31b3-b8ea-405e-8313-848e692698d7","anomalyScopeType":"TopN","negationOperation":false,"topNAnomalyScope":{"top":5,"period":10,"minTopCount":9},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","metricId":"9a558ae1-b035-4469-8a95-bdc71e123dae","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"e73c31b3-b8ea-405e-8313-848e692698d7","anomalyScopeType":"Dimension","negationOperation":false,"dimensionAnomalyScope":{"dimension":{"city":"Shenzhen"}},"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","triggerForMissing":false}},{"anomalyDetectionConfigurationId":"e73c31b3-b8ea-405e-8313-848e692698d7","anomalyScopeType":"All","negationOperation":false,"severityFilter":{"minAlertSeverity":"Low","maxAlertSeverity":"High"},"valueFilter":{"lower":1.0,"upper":5.0,"direction":"Both","triggerForMissing":false}}]}' + headers: + apim-request-id: + - d4c5aa90-108b-449b-8cf5-76c26608e5b0 + content-length: + - '1205' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 19:22:26 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '78' + x-request-id: + - d4c5aa90-108b-449b-8cf5-76c26608e5b0 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/440aafd6-1841-4705-a786-73b7c7834b71 + response: + body: + string: '' + headers: + apim-request-id: + - 58246b15-1b79-47ab-bf48-c6f36b043681 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 19:22:27 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '288' + x-request-id: + - 58246b15-1b79-47ab-bf48-c6f36b043681 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feed_ingestion.test_get_data_feed_ingestion_progress.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feed_ingestion.test_get_data_feed_ingestion_progress.yaml new file mode 100644 index 000000000000..8164e489460c --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feed_ingestion.test_get_data_feed_ingestion_progress.yaml @@ -0,0 +1,38 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/data_feed_id/ingestionProgress + response: + body: + string: '{"latestSuccessTimestamp":"2020-09-19T00:00:00Z","latestActiveTimestamp":"2020-09-21T00:00:00Z"}' + headers: + apim-request-id: + - b23f1d1a-ba0e-435a-8b47-5fa1676f99ff + content-length: + - '96' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 01:43:35 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '392' + x-request-id: + - b23f1d1a-ba0e-435a-8b47-5fa1676f99ff + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feed_ingestion.test_list_data_feed_ingestion_status.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feed_ingestion.test_list_data_feed_ingestion_status.yaml new file mode 100644 index 000000000000..f7879456090e --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feed_ingestion.test_list_data_feed_ingestion_status.yaml @@ -0,0 +1,42 @@ +interactions: +- request: + body: '{"startTime": "2020-08-09T00:00:00.000Z", "endTime": "2020-09-16T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/data_feed_id/ingestionStatus/query + response: + body: + string: '{"value":[{"timestamp":"2020-09-15T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-14T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-13T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-12T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-11T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-10T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-09T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-08T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-07T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-06T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-05T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-04T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-03T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-02T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-01T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-31T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-30T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-29T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-28T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-27T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-26T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-25T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-24T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-23T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-22T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-21T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-20T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-19T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-18T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-17T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-16T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-15T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-14T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-13T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-12T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-11T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-10T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-09T00:00:00Z","status":"Succeeded","message":""}],"@nextLink":null}' + headers: + apim-request-id: + - 5a263d7f-db65-4910-9211-c9fc565dade8 + content-length: + - '2726' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 01:43:36 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '186' + x-request-id: + - 5a263d7f-db65-4910-9211-c9fc565dade8 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feed_ingestion.test_list_data_feed_ingestion_status_with_skip.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feed_ingestion.test_list_data_feed_ingestion_status_with_skip.yaml new file mode 100644 index 000000000000..46cefab42f73 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feed_ingestion.test_list_data_feed_ingestion_status_with_skip.yaml @@ -0,0 +1,82 @@ +interactions: +- request: + body: '{"startTime": "2020-08-09T00:00:00.000Z", "endTime": "2020-09-16T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/data_feed_id/ingestionStatus/query + response: + body: + string: '{"value":[{"timestamp":"2020-09-15T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-14T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-13T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-12T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-11T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-10T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-09T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-08T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-07T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-06T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-05T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-04T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-03T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-02T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-01T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-31T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-30T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-29T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-28T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-27T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-26T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-25T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-24T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-23T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-22T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-21T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-20T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-19T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-18T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-17T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-16T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-15T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-14T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-13T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-12T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-11T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-10T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-09T00:00:00Z","status":"Succeeded","message":""}],"@nextLink":null}' + headers: + apim-request-id: + - 84eff031-0f05-410b-813d-c8cdcccef3c2 + content-length: + - '2726' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 01:43:37 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '178' + x-request-id: + - 84eff031-0f05-410b-813d-c8cdcccef3c2 + status: + code: 200 + message: OK +- request: + body: '{"startTime": "2020-08-09T00:00:00.000Z", "endTime": "2020-09-16T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/data_feed_id/ingestionStatus/query?$skip=5 + response: + body: + string: '{"value":[{"timestamp":"2020-09-10T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-09T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-08T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-07T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-06T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-05T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-04T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-03T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-02T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-09-01T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-31T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-30T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-29T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-28T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-27T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-26T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-25T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-24T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-23T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-22T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-21T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-20T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-19T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-18T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-17T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-16T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-15T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-14T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-13T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-12T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-11T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-10T00:00:00Z","status":"Succeeded","message":""},{"timestamp":"2020-08-09T00:00:00Z","status":"Succeeded","message":""}],"@nextLink":null}' + headers: + apim-request-id: + - 8242c427-b4c1-44da-9ada-63f25a4052d5 + content-length: + - '2371' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 01:43:38 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '178' + x-request-id: + - 8242c427-b4c1-44da-9ada-63f25a4052d5 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feed_ingestion.test_refresh_data_feed_ingestion.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feed_ingestion.test_refresh_data_feed_ingestion.yaml new file mode 100644 index 000000000000..727f594620ef --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feed_ingestion.test_refresh_data_feed_ingestion.yaml @@ -0,0 +1,40 @@ +interactions: +- request: + body: '{"startTime": "2019-10-01T00:00:00.000Z", "endTime": "2020-10-03T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/data_feed_id/ingestionProgress/reset + response: + body: + string: '' + headers: + apim-request-id: + - 10de6362-b67b-4124-b401-93276f1d491d + content-length: + - '0' + date: + - Tue, 22 Sep 2020 01:43:39 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '225' + x-request-id: + - 10de6362-b67b-4124-b401-93276f1d491d + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_from_sql_server.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_from_sql_server.yaml new file mode 100644 index 000000000000..214373ccb5db --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_from_sql_server.yaml @@ -0,0 +1,168 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "testfeed3c5020f6", + "dataFeedDescription": "my first data feed", "granularityName": "Daily", "metrics": + [{"metricName": "cost", "metricDisplayName": "display cost", "metricDescription": + "the cost"}, {"metricName": "revenue", "metricDisplayName": "display revenue", + "metricDescription": "the revenue"}], "dimension": [{"dimensionName": "category", + "dimensionDisplayName": "display category"}, {"dimensionName": "city", "dimensionDisplayName": + "display city"}], "timestampColumn": "Timestamp", "dataStartFrom": "2019-10-01T00:00:00.000Z", + "startOffsetInSeconds": -1, "maxConcurrency": 0, "minRetryIntervalInSeconds": + -1, "stopRetryAfterInSeconds": -1, "needRollup": "NoRollup", "rollUpMethod": + "None", "fillMissingPointType": "SmartFilling", "viewMode": "Private", "admins": + ["yournamehere@microsoft.com"], "viewers": ["viewers"], "actionLinkTemplate": + "action link template", "dataSourceParameter": {"connectionString": "connectionstring", + "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1304' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 5dae569e-a40a-4b48-88b7-6849a25606f6 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:32:59 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/1cc74792-f256-4ebf-aa76-5be8053de62a + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '991' + x-request-id: + - 5dae569e-a40a-4b48-88b7-6849a25606f6 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/1cc74792-f256-4ebf-aa76-5be8053de62a + response: + body: + string: "{\"dataFeedId\":\"1cc74792-f256-4ebf-aa76-5be8053de62a\",\"dataFeedName\":\"testfeed3c5020f6\",\"metrics\":[{\"metricId\":\"f82c66ec-f96f-422f-88e3-ea76c3283f79\",\"metricName\":\"cost\",\"metricDisplayName\":\"display + cost\",\"metricDescription\":\"the cost\"},{\"metricId\":\"7779c555-89e7-402f-af8c-8b86b679068e\",\"metricName\":\"revenue\",\"metricDisplayName\":\"display + revenue\",\"metricDescription\":\"the revenue\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"display + category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"display + city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"Timestamp\",\"startOffsetInSeconds\":-1,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"SmartFilling\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"my + first data feed\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":0,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\",\"yournamehere@microsoft.com\"],\"viewers\":[\"viewers\"],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-09T22:33:00Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"action + link template\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 7e2c6956-6b68-4bf9-943e-43d68c641fb2 + content-length: + - '1625' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:00 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '127' + x-request-id: + - 7e2c6956-6b68-4bf9-943e-43d68c641fb2 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/1cc74792-f256-4ebf-aa76-5be8053de62a + response: + body: + string: '' + headers: + apim-request-id: + - ff82fa3e-5454-4847-9ef0-cc7b7a72c7c2 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:00 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '270' + x-request-id: + - ff82fa3e-5454-4847-9ef0-cc7b7a72c7c2 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/1cc74792-f256-4ebf-aa76-5be8053de62a + response: + body: + string: '{"code":"ERROR_INVALID_PARAMETER","message":"datafeedId is invalid."}' + headers: + apim-request-id: + - f6f64962-98f2-40af-915a-b65cf9204b3d + content-length: + - '69' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:00 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '36' + x-request-id: + - f6f64962-98f2-40af-915a-b65cf9204b3d + status: + code: 404 + message: Not Found +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_from_sql_server_with_custom_values.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_from_sql_server_with_custom_values.yaml new file mode 100644 index 000000000000..83ea35c2f395 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_from_sql_server_with_custom_values.yaml @@ -0,0 +1,169 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "testfeedfe7728fa", + "dataFeedDescription": "my first data feed", "granularityName": "Custom", "granularityAmount": + 20, "metrics": [{"metricName": "cost", "metricDisplayName": "display cost", + "metricDescription": "the cost"}, {"metricName": "revenue", "metricDisplayName": + "display revenue", "metricDescription": "the revenue"}], "dimension": [{"dimensionName": + "category", "dimensionDisplayName": "display category"}, {"dimensionName": "city", + "dimensionDisplayName": "display city"}], "timestampColumn": "Timestamp", "dataStartFrom": + "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": -1, "maxConcurrency": 0, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "needRollup": + "AlreadyRollup", "rollUpMethod": "Sum", "allUpIdentification": "sumrollup", + "fillMissingPointType": "CustomValue", "fillMissingPointValue": 10.0, "viewMode": + "Private", "admins": ["yournamehere@microsoft.com"], "viewers": ["viewers"], + "actionLinkTemplate": "action link template", "dataSourceParameter": {"connectionString": + "connectionstring", "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1400' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - c1df1932-df45-49ef-99ea-38f4a8d97a30 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:02 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/7fb88b3f-3f2d-43f8-bf92-7e48bf87a624 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '369' + x-request-id: + - c1df1932-df45-49ef-99ea-38f4a8d97a30 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/7fb88b3f-3f2d-43f8-bf92-7e48bf87a624 + response: + body: + string: "{\"dataFeedId\":\"7fb88b3f-3f2d-43f8-bf92-7e48bf87a624\",\"dataFeedName\":\"testfeedfe7728fa\",\"metrics\":[{\"metricId\":\"f5f63159-b63d-4a34-9b16-833091e69af1\",\"metricName\":\"cost\",\"metricDisplayName\":\"display + cost\",\"metricDescription\":\"the cost\"},{\"metricId\":\"784438e5-ed0b-4477-bd15-12d011eccc35\",\"metricName\":\"revenue\",\"metricDisplayName\":\"display + revenue\",\"metricDescription\":\"the revenue\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"display + category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"display + city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"Timestamp\",\"startOffsetInSeconds\":-1,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Custom\",\"granularityAmount\":20,\"allUpIdentification\":\"sumrollup\",\"needRollup\":\"AlreadyRollup\",\"fillMissingPointType\":\"CustomValue\",\"fillMissingPointValue\":10.0,\"rollUpMethod\":\"Sum\",\"rollUpColumns\":[],\"dataFeedDescription\":\"my + first data feed\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":0,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\",\"yournamehere@microsoft.com\"],\"viewers\":[\"viewers\"],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-09T22:33:02Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"action + link template\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - aafbda54-2b6e-4d70-93a0-4bc4d0c2c623 + content-length: + - '1635' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:02 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '124' + x-request-id: + - aafbda54-2b6e-4d70-93a0-4bc4d0c2c623 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/7fb88b3f-3f2d-43f8-bf92-7e48bf87a624 + response: + body: + string: '' + headers: + apim-request-id: + - cbdc696e-0804-4390-a7e5-0069d70208d3 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:03 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '260' + x-request-id: + - cbdc696e-0804-4390-a7e5-0069d70208d3 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/7fb88b3f-3f2d-43f8-bf92-7e48bf87a624 + response: + body: + string: '{"code":"ERROR_INVALID_PARAMETER","message":"datafeedId is invalid."}' + headers: + apim-request-id: + - f2fed4e4-eb24-4379-b78f-e6268aa30226 + content-length: + - '69' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:03 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '40' + x-request-id: + - f2fed4e4-eb24-4379-b78f-e6268aa30226 + status: + code: 404 + message: Not Found +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_application_insights.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_application_insights.yaml new file mode 100644 index 000000000000..73ec6bb4b3c8 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_application_insights.yaml @@ -0,0 +1,125 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "AzureApplicationInsights", "dataFeedName": "applicationinsights2d9119a3", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2020-07-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"azureCloud": "Azure", "applicationId": "3706fe8b-98f1-47c7-bf69-b73b6e53274d", + "apiKey": "connectionstring", "query": "let gran=60m; let starttime=datetime(@StartTime); + let endtime=starttime + gran; requests |\\u202fwhere\\u202ftimestamp\\u202f>=\\u202fstarttime\\u202fand\\u202ftimestamp\\u202f<\\u202fendtime + |\\u202fsummarize\\u202frequest_count\\u202f=\\u202fcount(),\\u202fduration_avg_ms\\u202f=\\u202favg(duration),\\u202fduration_95th_ms\\u202f=\\u202fpercentile(duration,\\u202f95),\\u202fduration_max_ms\\u202f=\\u202fmax(duration)\\u202fby\\u202fresultCode"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1012' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 66588659-d8af-42a4-aea5-70a7bfec0c23 + content-length: + - '0' + date: + - Tue, 15 Sep 2020 16:05:35 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/6172f626-946d-4457-b425-fbcfdcda9f79 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5752' + x-request-id: + - 66588659-d8af-42a4-aea5-70a7bfec0c23 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/6172f626-946d-4457-b425-fbcfdcda9f79 + response: + body: + string: "{\"dataFeedId\":\"6172f626-946d-4457-b425-fbcfdcda9f79\",\"dataFeedName\":\"applicationinsights2d9119a3\",\"metrics\":[{\"metricId\":\"e4a9137a-d1b4-4588-bee6-fa5e63433547\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"a30f71ac-e17c-4f0b-ae3d-b36c989e51bc\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2020-07-01T00:00:00Z\",\"dataSourceType\":\"AzureApplicationInsights\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-15T16:05:36Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"apiKey\":\"connectionstring\",\"query\":\"let + gran=60m; let starttime=datetime(@StartTime); let endtime=starttime + gran; + requests |\u202Fwhere\u202Ftimestamp\u202F>=\u202Fstarttime\u202Fand\u202Ftimestamp\u202F<\u202Fendtime + |\u202Fsummarize\u202Frequest_count\u202F=\u202Fcount(),\u202Fduration_avg_ms\u202F=\u202Favg(duration),\u202Fduration_95th_ms\u202F=\u202Fpercentile(duration,\u202F95),\u202Fduration_max_ms\u202F=\u202Fmax(duration)\u202Fby\u202FresultCode\",\"azureCloud\":\"Azure\",\"applicationId\":\"3706fe8b-98f1-47c7-bf69-b73b6e53274d\"}}" + headers: + apim-request-id: + - c46b4522-8e76-444e-a412-8156710e1929 + content-length: + - '1675' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2020 16:05:36 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '298' + x-request-id: + - c46b4522-8e76-444e-a412-8156710e1929 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/6172f626-946d-4457-b425-fbcfdcda9f79 + response: + body: + string: '' + headers: + apim-request-id: + - cc02cfe4-271b-44f7-9143-97d6ea2b5a96 + content-length: + - '0' + date: + - Tue, 15 Sep 2020 16:05:42 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5494' + x-request-id: + - cc02cfe4-271b-44f7-9143-97d6ea2b5a96 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_azure_blob.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_azure_blob.yaml new file mode 100644 index 000000000000..b4312459dce3 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_azure_blob.yaml @@ -0,0 +1,120 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "AzureBlob", "dataFeedName": "blobfeed3c7420dd", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "container": + "adsample", "blobTemplate": "%Y/%m/%d/%h/JsonFormatV2.json"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '899' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 73e5632c-6eec-4c86-8851-7bdaa54e6f3c + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:06 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/ca07eb60-3f35-4bb6-a9c2-3f4f0451c0bd + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '357' + x-request-id: + - 73e5632c-6eec-4c86-8851-7bdaa54e6f3c + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/ca07eb60-3f35-4bb6-a9c2-3f4f0451c0bd + response: + body: + string: '{"dataFeedId":"ca07eb60-3f35-4bb6-a9c2-3f4f0451c0bd","dataFeedName":"blobfeed3c7420dd","metrics":[{"metricId":"e827d1d0-9c3f-4e11-80d0-45c00c81aa12","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"601da17c-218b-40d9-9bdb-f411f6cc3875","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-10-01T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T22:33:07Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"connectionstring","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json"}}' + headers: + apim-request-id: + - aa9f302d-d686-4f0c-af07-155159d54f90 + content-length: + - '1636' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:07 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '126' + x-request-id: + - aa9f302d-d686-4f0c-af07-155159d54f90 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/ca07eb60-3f35-4bb6-a9c2-3f4f0451c0bd + response: + body: + string: '' + headers: + apim-request-id: + - 635de48b-f847-4b9e-b986-11f02aa70161 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:07 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '268' + x-request-id: + - 635de48b-f847-4b9e-b986-11f02aa70161 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_azure_cosmos_db.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_azure_cosmos_db.yaml new file mode 100644 index 000000000000..52332e1c1a48 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_azure_cosmos_db.yaml @@ -0,0 +1,122 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "AzureCosmosDB", "dataFeedName": "cosmosfeede78222f7", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "sqlQuery": + "\''SELECT * FROM Items I where I.Timestamp >= @StartTime and I.Timestamp < + @EndTime\''", "database": "adsample", "collectionId": "adsample"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '754' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 937edb67-65ef-4427-96ed-abc7608ee60b + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:09 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/91febd65-866d-4d2f-923a-a6a283c70fe1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '316' + x-request-id: + - 937edb67-65ef-4427-96ed-abc7608ee60b + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/91febd65-866d-4d2f-923a-a6a283c70fe1 + response: + body: + string: '{"dataFeedId":"91febd65-866d-4d2f-923a-a6a283c70fe1","dataFeedName":"cosmosfeede78222f7","metrics":[{"metricId":"8dabeb4c-8fc8-4a03-9016-d9390faff408","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"c538a7cb-9495-4c87-9265-0757100527fb","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-10-01T00:00:00Z","dataSourceType":"AzureCosmosDB","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T22:33:09Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring","database":"adsample","sqlQuery":"''SELECT + * FROM Items I where I.Timestamp >= @StartTime and I.Timestamp < @EndTime''","collectionId":"adsample"}}' + headers: + apim-request-id: + - 2fb7655d-2dea-4dd6-9127-64f46b63d6bd + content-length: + - '1489' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:09 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '121' + x-request-id: + - 2fb7655d-2dea-4dd6-9127-64f46b63d6bd + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/91febd65-866d-4d2f-923a-a6a283c70fe1 + response: + body: + string: '' + headers: + apim-request-id: + - 540953cc-94ed-4cad-9e28-e07111d1fd4c + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:10 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '266' + x-request-id: + - 540953cc-94ed-4cad-9e28-e07111d1fd4c + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_azure_table.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_azure_table.yaml new file mode 100644 index 000000000000..96cb23495531 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_azure_table.yaml @@ -0,0 +1,121 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "AzureTable", "dataFeedName": "tablefeed5dd12146", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "table": + "adsample", "query": "PartitionKey ge \''@StartTime\'' and PartitionKey lt \''@EndTime\''"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '716' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 63c4b880-0ed8-4d3c-b26b-48dd9aa81e59 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:11 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/d3b635a8-e283-4bdf-b065-391e89d0eaba + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '359' + x-request-id: + - 63c4b880-0ed8-4d3c-b26b-48dd9aa81e59 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/d3b635a8-e283-4bdf-b065-391e89d0eaba + response: + body: + string: '{"dataFeedId":"d3b635a8-e283-4bdf-b065-391e89d0eaba","dataFeedName":"tablefeed5dd12146","metrics":[{"metricId":"79b63694-6424-48a6-a422-c27f8503cc6f","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"5cd221e8-9778-4495-a88e-b3a6bcbe945c","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-10-01T00:00:00Z","dataSourceType":"AzureTable","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T22:33:11Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring","query":"PartitionKey + ge ''@StartTime'' and PartitionKey lt ''@EndTime''","table":"adsample"}}' + headers: + apim-request-id: + - 03cf8915-2627-4ffa-9dd6-638072b3e06d + content-length: + - '1453' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:11 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '127' + x-request-id: + - 03cf8915-2627-4ffa-9dd6-638072b3e06d + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/d3b635a8-e283-4bdf-b065-391e89d0eaba + response: + body: + string: '' + headers: + apim-request-id: + - e4c123e0-0ba9-4c59-bd4e-5c9d8479126f + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:12 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '254' + x-request-id: + - e4c123e0-0ba9-4c59-bd4e-5c9d8479126f + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_data_explorer.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_data_explorer.yaml new file mode 100644 index 000000000000..0f92867aa6dd --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_data_explorer.yaml @@ -0,0 +1,123 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "AzureDataExplorer", "dataFeedName": "azuredataexplorera0b42222", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-01-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "let StartDateTime = datetime(@StartTime); let EndDateTime = StartDateTime + + 1d; adsample | where Timestamp >= StartDateTime and Timestamp < EndDateTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '893' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - c9d37b50-d6fa-4b6d-bfcf-49b5b4d8b38d + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:13 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/a18336dd-8394-4fad-836f-7eea8e8075ad + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '484' + x-request-id: + - c9d37b50-d6fa-4b6d-bfcf-49b5b4d8b38d + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/a18336dd-8394-4fad-836f-7eea8e8075ad + response: + body: + string: '{"dataFeedId":"a18336dd-8394-4fad-836f-7eea8e8075ad","dataFeedName":"azuredataexplorera0b42222","metrics":[{"metricId":"462e75ab-1bd9-4d0f-8462-9756b897476c","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"884a23e9-95c2-4cc9-a795-84a00d6a4051","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-01T00:00:00Z","dataSourceType":"AzureDataExplorer","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T22:33:13Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring","query":"let + StartDateTime = datetime(@StartTime); let EndDateTime = StartDateTime + 1d; + adsample | where Timestamp >= StartDateTime and Timestamp < EndDateTime"}}' + headers: + apim-request-id: + - 1036be51-a46b-45cc-ad14-b9c320465287 + content-length: + - '1632' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:13 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '129' + x-request-id: + - 1036be51-a46b-45cc-ad14-b9c320465287 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/a18336dd-8394-4fad-836f-7eea8e8075ad + response: + body: + string: '' + headers: + apim-request-id: + - 3ee46462-9d55-415a-ae05-474f111448aa + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:14 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '274' + x-request-id: + - 3ee46462-9d55-415a-ae05-474f111448aa + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_datalake.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_datalake.yaml new file mode 100644 index 000000000000..548981f8a5d1 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_datalake.yaml @@ -0,0 +1,122 @@ +interactions: +- request: + body: '{"dataSourceType": "AzureDataLakeStorageGen2", "dataFeedName": "datalake1595147e", + "granularityName": "Daily", "metrics": [{"metricName": "cost", "metricDisplayName": + "Cost"}, {"metricName": "revenue", "metricDisplayName": "Revenue"}], "dimension": + [{"dimensionName": "category", "dimensionDisplayName": "Category"}, {"dimensionName": + "city", "dimensionDisplayName": "City"}], "dataStartFrom": "2019-01-01T00:00:00.000Z", + "startOffsetInSeconds": 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": + -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": {"accountName": "adsampledatalakegen2", + "accountKey": "connectionstring", "fileSystemName": "adsample", "directoryTemplate": + "%Y/%m/%d", "fileTemplate": "adsample.json"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '800' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - b17cd23f-1987-464f-b2fe-034f5936af62 + content-length: + - '0' + date: + - Fri, 25 Sep 2020 17:44:11 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/af6786b1-726f-48e4-b841-75aae6bc6f4f + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '402' + x-request-id: + - b17cd23f-1987-464f-b2fe-034f5936af62 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/af6786b1-726f-48e4-b841-75aae6bc6f4f + response: + body: + string: '{"dataFeedId":"af6786b1-726f-48e4-b841-75aae6bc6f4f","dataFeedName":"datalake1595147e","metrics":[{"metricId":"294a3324-62ce-4c13-8c83-fa99932c3a86","metricName":"cost","metricDisplayName":"Cost","metricDescription":""},{"metricId":"a941518c-c225-4d8d-a217-345034aad4d6","metricName":"revenue","metricDisplayName":"Revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"Category"},{"dimensionName":"city","dimensionDisplayName":"City"}],"dataStartFrom":"2019-01-01T00:00:00Z","dataSourceType":"AzureDataLakeStorageGen2","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-25T17:44:12Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"fileTemplate":"adsample.json","accountName":"adsampledatalakegen2","directoryTemplate":"%Y/%m/%d","fileSystemName":"adsample","accountKey":"connectionstring"}}' + headers: + apim-request-id: + - e4899221-12af-4b28-b5b0-cb67f3fa436d + content-length: + - '1404' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 25 Sep 2020 17:44:11 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '143' + x-request-id: + - e4899221-12af-4b28-b5b0-cb67f3fa436d + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/af6786b1-726f-48e4-b841-75aae6bc6f4f + response: + body: + string: '' + headers: + apim-request-id: + - 57af76ab-4a5c-48e0-ba75-43b876dee357 + content-length: + - '0' + date: + - Fri, 25 Sep 2020 17:44:12 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '270' + x-request-id: + - 57af76ab-4a5c-48e0-ba75-43b876dee357 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_elasticsearch.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_elasticsearch.yaml new file mode 100644 index 000000000000..a63e51ea3f9a --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_elasticsearch.yaml @@ -0,0 +1,123 @@ +interactions: +- request: + body: '{"dataSourceType": "Elasticsearch", "dataFeedName": "elastic832416a2", + "granularityName": "Daily", "metrics": [{"metricName": "cost", "metricDisplayName": + "Cost"}, {"metricName": "revenue", "metricDisplayName": "Revenue"}], "dimension": + [{"dimensionName": "category", "dimensionDisplayName": "Category"}, {"dimensionName": + "city", "dimensionDisplayName": "City"}], "dataStartFrom": "2019-01-01T00:00:00.000Z", + "startOffsetInSeconds": 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": + -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": {"host": "ad-sample-es.westus2.cloudapp.azure.com", + "port": "9200", "authHeader": "connectionstring", "query": "''select * from + adsample where timestamp = @StartTime''"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '732' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 7829cbb2-75c3-4bb9-a7a5-3c22b5d77618 + content-length: + - '0' + date: + - Fri, 25 Sep 2020 17:43:31 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/48912c2c-6695-4f07-a96b-080486da0802 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '656' + x-request-id: + - 7829cbb2-75c3-4bb9-a7a5-3c22b5d77618 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/48912c2c-6695-4f07-a96b-080486da0802 + response: + body: + string: '{"dataFeedId":"48912c2c-6695-4f07-a96b-080486da0802","dataFeedName":"elastic832416a2","metrics":[{"metricId":"ff3959b6-e2f3-4d8a-94c4-a029d314e5a3","metricName":"cost","metricDisplayName":"Cost","metricDescription":""},{"metricId":"063d9bf0-913e-4874-8a42-cb40b3cf2155","metricName":"revenue","metricDisplayName":"Revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"Category"},{"dimensionName":"city","dimensionDisplayName":"City"}],"dataStartFrom":"2019-01-01T00:00:00Z","dataSourceType":"Elasticsearch","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-25T17:43:31Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"authHeader":"connectionstring","port":"9200","query":"''select + * from adsample where timestamp = @StartTime''","host":"ad-sample-es.westus2.cloudapp.azure.com"}}' + headers: + apim-request-id: + - 8caaaa2f-b623-4b8f-ad72-07bc6e80623b + content-length: + - '1338' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 25 Sep 2020 17:43:31 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '223' + x-request-id: + - 8caaaa2f-b623-4b8f-ad72-07bc6e80623b + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/48912c2c-6695-4f07-a96b-080486da0802 + response: + body: + string: '' + headers: + apim-request-id: + - de968b73-f87e-4835-91e3-694a59ce08c5 + content-length: + - '0' + date: + - Fri, 25 Sep 2020 17:43:32 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '349' + x-request-id: + - de968b73-f87e-4835-91e3-694a59ce08c5 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_http_request_get.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_http_request_get.yaml new file mode 100644 index 000000000000..a8c15eeabcde --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_http_request_get.yaml @@ -0,0 +1,119 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "HttpRequest", "dataFeedName": "httprequestfeedgetcb44180e", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"url": "connectionstring", "httpMethod": "GET"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '554' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 5d12f2c8-ff98-4220-b2ff-860eb98af011 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 22:35:57 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/6ca0a962-3fa5-4dc3-8c0c-8f7e14c2d3f8 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '872' + x-request-id: + - 5d12f2c8-ff98-4220-b2ff-860eb98af011 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/6ca0a962-3fa5-4dc3-8c0c-8f7e14c2d3f8 + response: + body: + string: '{"dataFeedId":"6ca0a962-3fa5-4dc3-8c0c-8f7e14c2d3f8","dataFeedName":"httprequestfeedgetcb44180e","metrics":[{"metricId":"f7aefd4c-7664-4c91-90cd-76e1bd3dbd55","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"4c043a1e-6162-4103-9d67-a026f19e78fb","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-10-01T00:00:00Z","dataSourceType":"HttpRequest","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-11T22:35:58Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"httpMethod":"GET","url":"connectionstring"}}' + headers: + apim-request-id: + - 6666bf72-7d71-4824-a716-d6fd09bce356 + content-length: + - '1293' + content-type: + - application/json; charset=utf-8 + date: + - Fri, 11 Sep 2020 22:35:57 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '121' + x-request-id: + - 6666bf72-7d71-4824-a716-d6fd09bce356 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/6ca0a962-3fa5-4dc3-8c0c-8f7e14c2d3f8 + response: + body: + string: '' + headers: + apim-request-id: + - 7e6935aa-4722-42d1-8cea-f8a3caec7bb6 + content-length: + - '0' + date: + - Fri, 11 Sep 2020 22:35:58 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '265' + x-request-id: + - 7e6935aa-4722-42d1-8cea-f8a3caec7bb6 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_http_request_post.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_http_request_post.yaml new file mode 100644 index 000000000000..0cdae2fdf3fd --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_http_request_post.yaml @@ -0,0 +1,121 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "HttpRequest", "dataFeedName": "httprequestfeedpost2fd02405", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"url": "connectionstring", "httpHeader": "", "httpMethod": + "POST", "payload": "{\''startTime\'': \''@StartTime\''}"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '588' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 0a3348c7-8192-4e99-a14f-1babb056b6e5 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:17 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/24e5aaf0-3302-4474-9e01-19ed37bb8ab3 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '346' + x-request-id: + - 0a3348c7-8192-4e99-a14f-1babb056b6e5 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/24e5aaf0-3302-4474-9e01-19ed37bb8ab3 + response: + body: + string: '{"dataFeedId":"24e5aaf0-3302-4474-9e01-19ed37bb8ab3","dataFeedName":"httprequestfeedpost2fd02405","metrics":[{"metricId":"2ec3518f-3d4c-475e-a36f-055255d9b964","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"4d9e9df6-9036-4c50-8fa6-15ca770a853d","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-10-01T00:00:00Z","dataSourceType":"HttpRequest","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T22:33:17Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"httpHeader":"","payload":"{''startTime'': + ''@StartTime''}","httpMethod":"POST","url":"connectionstring"}}' + headers: + apim-request-id: + - 646f3442-5075-4784-bb92-badefa7c32d2 + content-length: + - '1323' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:17 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '131' + x-request-id: + - 646f3442-5075-4784-bb92-badefa7c32d2 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/24e5aaf0-3302-4474-9e01-19ed37bb8ab3 + response: + body: + string: '' + headers: + apim-request-id: + - 72fa8370-f75c-4f77-8c9e-686652c02225 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:18 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '293' + x-request-id: + - 72fa8370-f75c-4f77-8c9e-686652c02225 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_influxdb.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_influxdb.yaml new file mode 100644 index 000000000000..cb4072e5f83b --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_influxdb.yaml @@ -0,0 +1,122 @@ +interactions: +- request: + body: 'b''b\''{"dataSourceType": "InfluxDB", "dataFeedName": "influxdbfb062014", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-01-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "database": + "adsample", "userName": "adreadonly", "password": "connectionstring", "query": + "\\\''select * from adsample2 where Timestamp = @StartTime\\\''"}}\''''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '638' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 68da9bb3-a8ec-4946-a55b-ebfc4fce06cd + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:19 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/1dc384af-eb93-4dda-a74b-88ba0eba1b28 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '365' + x-request-id: + - 68da9bb3-a8ec-4946-a55b-ebfc4fce06cd + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/1dc384af-eb93-4dda-a74b-88ba0eba1b28 + response: + body: + string: '{"dataFeedId":"1dc384af-eb93-4dda-a74b-88ba0eba1b28","dataFeedName":"influxdbfb062014","metrics":[{"metricId":"f9b08e14-efc9-4be8-b953-b2bb3b932024","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"4bbddfd6-df14-4ce9-b123-d572b0760a6e","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-01T00:00:00Z","dataSourceType":"InfluxDB","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T22:33:19Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring","password":"connectionstring","database":"adsample","query":"''select + * from adsample2 where Timestamp = @StartTime''","userName":"adreadonly"}}' + headers: + apim-request-id: + - 8f554150-c847-48ce-88d7-502f6a1e8391 + content-length: + - '1371' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:19 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '123' + x-request-id: + - 8f554150-c847-48ce-88d7-502f6a1e8391 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/1dc384af-eb93-4dda-a74b-88ba0eba1b28 + response: + body: + string: '' + headers: + apim-request-id: + - bcd09f83-c22c-4cf3-a53a-4834affd5136 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:19 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '261' + x-request-id: + - bcd09f83-c22c-4cf3-a53a-4834affd5136 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_mongodb.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_mongodb.yaml new file mode 100644 index 000000000000..7fda0713538d --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_mongodb.yaml @@ -0,0 +1,123 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "MongoDB", "dataFeedName": "mongodbdaec1f9e", "granularityName": + "Daily", "metrics": [{"metricName": "cost"}, {"metricName": "revenue"}], "dimension": + [{"dimensionName": "category"}, {"dimensionName": "city"}], "dataStartFrom": + "2019-01-01T00:00:00.000Z", "startOffsetInSeconds": 0, "maxConcurrency": -1, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": + {"connectionString": "connectionstring", "database": "adsample", "command": + "{\\"find\\": \\"adsample\\", \\"filter\\": { Timestamp: { $eq: @StartTime }} + \\"batchSize\\": 2000,}"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '625' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - d65a8b39-9ba4-4664-a70b-3cdb35f40df9 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:52:10 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/6e0d0096-718c-43b7-b230-b068b077497e + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '579' + x-request-id: + - d65a8b39-9ba4-4664-a70b-3cdb35f40df9 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/6e0d0096-718c-43b7-b230-b068b077497e + response: + body: + string: '{"dataFeedId":"6e0d0096-718c-43b7-b230-b068b077497e","dataFeedName":"mongodbdaec1f9e","metrics":[{"metricId":"b300a8bb-3cd7-4efe-93b8-1622d7824ade","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"943e9517-a21c-48ee-ba7d-ca988de81acb","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-01T00:00:00Z","dataSourceType":"MongoDB","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T22:52:11Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring","database":"adsample","command":"{\"find\": + \"adsample\", \"filter\": { Timestamp: { $eq: @StartTime }} \"batchSize\": + 2000,}"}}' + headers: + apim-request-id: + - 35a10888-61c0-4954-8138-3b0de3903ff4 + content-length: + - '1362' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:52:11 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '128' + x-request-id: + - 35a10888-61c0-4954-8138-3b0de3903ff4 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/6e0d0096-718c-43b7-b230-b068b077497e + response: + body: + string: '' + headers: + apim-request-id: + - ed0a3d50-2f13-45f2-a2f8-eeb3afdb3039 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:52:11 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '273' + x-request-id: + - ed0a3d50-2f13-45f2-a2f8-eeb3afdb3039 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_mysql.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_mysql.yaml new file mode 100644 index 000000000000..ab82d882f464 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_mysql.yaml @@ -0,0 +1,123 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "MySql", "dataFeedName": "mysql9c5a1eee", "granularityName": + "Daily", "metrics": [{"metricName": "cost"}, {"metricName": "revenue"}], "dimension": + [{"dimensionName": "category"}, {"dimensionName": "city"}], "dataStartFrom": + "2019-01-01T00:00:00.000Z", "startOffsetInSeconds": 0, "maxConcurrency": -1, + "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": -1, "dataSourceParameter": + {"connectionString": "Server=ad-sample.westcentralus.cloudapp.azure.com; Port=3306; + Database=adsample; Uid=adreadonly; Pwd=connectionstring", "query": "\''select + * from adsample2 where Timestamp = @StartTime\''"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '613' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - c5c1fb85-3363-4748-b56c-687943f9cb4f + content-length: + - '0' + date: + - Wed, 09 Sep 2020 23:05:29 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/e54530cc-1321-451a-885d-b54856410e4f + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '401' + x-request-id: + - c5c1fb85-3363-4748-b56c-687943f9cb4f + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/e54530cc-1321-451a-885d-b54856410e4f + response: + body: + string: '{"dataFeedId":"e54530cc-1321-451a-885d-b54856410e4f","dataFeedName":"mysql9c5a1eee","metrics":[{"metricId":"ef1a1d80-d408-4876-a665-4b473e6d3261","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"b4b5d534-373e-4587-8317-66e0cf322d5c","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-01T00:00:00Z","dataSourceType":"MySql","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T23:05:29Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"Server=ad-sample.westcentralus.cloudapp.azure.com; + Port=3306; Database=adsample; Uid=adreadonly; Pwd=connectionstring","query":"''select + * from adsample2 where Timestamp = @StartTime''"}}' + headers: + apim-request-id: + - 5711ed53-e8f1-49e7-b3c2-808fcee48dc4 + content-length: + - '1352' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 23:05:36 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '6742' + x-request-id: + - 5711ed53-e8f1-49e7-b3c2-808fcee48dc4 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/e54530cc-1321-451a-885d-b54856410e4f + response: + body: + string: '' + headers: + apim-request-id: + - 579edef3-dd57-4bc8-bbc5-82bcbed1b6c1 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 23:05:36 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '293' + x-request-id: + - 579edef3-dd57-4bc8-bbc5-82bcbed1b6c1 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_postgresql.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_postgresql.yaml new file mode 100644 index 000000000000..07dc1e1a9c39 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_data_feed_with_postgresql.yaml @@ -0,0 +1,121 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "PostgreSql", "dataFeedName": "postgresql3d3f210c", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-01-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "Host=adsamplepostgresql.eastus.cloudapp.azure.com;Username=adreadonly;Password=connectionstring;Database=adsample;Timeout=30;", + "query": "\''select * from adsample2 where Timestamp = @StartTime\''"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '631' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 8ea4bbc2-7dfe-4dc3-84e2-e20d2d397cd7 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 23:08:16 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/0a4e2842-6047-4f1e-8fa4-e3a32fb9b195 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '615' + x-request-id: + - 8ea4bbc2-7dfe-4dc3-84e2-e20d2d397cd7 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/0a4e2842-6047-4f1e-8fa4-e3a32fb9b195 + response: + body: + string: '{"dataFeedId":"0a4e2842-6047-4f1e-8fa4-e3a32fb9b195","dataFeedName":"postgresql3d3f210c","metrics":[{"metricId":"ca19f5a4-8d17-4473-a946-2ed59c7e8ba0","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"b6b17a48-887a-48f3-9d5e-69533d5215c0","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-01T00:00:00Z","dataSourceType":"PostgreSql","timestampColumn":"","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"PreviousValue","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":[],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-09T23:08:17Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"Host=adsamplepostgresql.eastus.cloudapp.azure.com;Username=adreadonly;Password=connectionstring;Database=adsample;Timeout=30;","query":"''select + * from adsample2 where Timestamp = @StartTime''"}}' + headers: + apim-request-id: + - bffaca25-e4b3-47b9-b5bb-456be686d9f3 + content-length: + - '1370' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 23:08:22 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5205' + x-request-id: + - bffaca25-e4b3-47b9-b5bb-456be686d9f3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/0a4e2842-6047-4f1e-8fa4-e3a32fb9b195 + response: + body: + string: '' + headers: + apim-request-id: + - 3046ec57-e85c-4e75-b8b3-2766d7fd0b5d + content-length: + - '0' + date: + - Wed, 09 Sep 2020 23:08:23 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '514' + x-request-id: + - 3046ec57-e85c-4e75-b8b3-2766d7fd0b5d + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_simple_data_feed.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_simple_data_feed.yaml new file mode 100644 index 000000000000..bfc10c199c59 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_create_simple_data_feed.yaml @@ -0,0 +1,119 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "testfeed24d71d27", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '699' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 5d886ca0-d31c-453a-b056-e512c9e78775 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:37 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/38134745-c762-4706-a36f-4f7533706a1a + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '422' + x-request-id: + - 5d886ca0-d31c-453a-b056-e512c9e78775 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/38134745-c762-4706-a36f-4f7533706a1a + response: + body: + string: "{\"dataFeedId\":\"38134745-c762-4706-a36f-4f7533706a1a\",\"dataFeedName\":\"testfeed24d71d27\",\"metrics\":[{\"metricId\":\"119d8967-5a68-4888-826c-ee2df9341334\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"e6625f2f-e54b-4a08-a697-cc6ee9bad7f0\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-09T22:33:37Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - da1c2951-0f53-4213-98e1-908f7580218e + content-length: + - '1373' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:38 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '127' + x-request-id: + - da1c2951-0f53-4213-98e1-908f7580218e + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/38134745-c762-4706-a36f-4f7533706a1a + response: + body: + string: '' + headers: + apim-request-id: + - 09383a6a-4974-4a72-bb49-05aec5f3cd98 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:38 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '247' + x-request-id: + - 09383a6a-4974-4a72-bb49-05aec5f3cd98 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds.yaml new file mode 100644 index 000000000000..ee41880b15cc --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds.yaml @@ -0,0 +1,41 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '{"value":[{"dataFeedId":"cf291ce6-ea8e-409b-b17d-bed01cc57dc0","dataFeedName":"updated + name","metrics":[{"metricId":"af6224d9-cbd2-43ac-914b-0d9cc5a6132e","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"b4a6347b-0696-4541-954d-4fb0a307acfb","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-02T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"updated + description","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":["krpratic@microsoft.com"],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-16T19:36:50Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"no","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json"}},{"dataFeedId":"data_feed_id","dataFeedName":"testDataFeed1","metrics":[{"metricId":"metric_id","metricName":"Metric1","metricDisplayName":"Metric1","metricDescription":""},{"metricId":"6b593f73-345c-40eb-a15c-7ec1fc73b028","metricName":"Metric2","metricDisplayName":"Metric2","metricDescription":""}],"dimension":[{"dimensionName":"Dim1","dimensionDisplayName":"Dim1"},{"dimensionName":"Dim2","dimensionDisplayName":"Dim2"}],"dataStartFrom":"2020-08-09T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"Timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["savaity@microsoft.com","krpratic@microsoft.com","yumeng@microsoft.com","xiangyan@microsoft.com","anuchan@microsoft.com","chriss@microsoft.com","mayurid@microsoft.com","johanste@microsoft.com","camaiaor@microsoft.com","kaolsze@microsoft.com","kaghiya@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:43:30Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"connectionstring","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json","jsonFormatVersion":"V2"}},{"dataFeedId":"b9dae651-63bc-4a98-a7c5-d8322b20c962","dataFeedName":"azsqlDatafeed","metrics":[{"metricId":"802153a9-1671-4a6f-901e-66bbf09384d9","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"f05c2f81-1e96-47ed-baa1-ab1a2d35562a","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2020-08-11T00:00:00Z","dataSourceType":"SqlServer","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":"__SUM__","needRollup":"NeedRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"Sum","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["kaolsze@microsoft.com","camaiaor@microsoft.com","mayurid@microsoft.com","krpratic@microsoft.com","kaghiya@microsoft.com","xiangyan@microsoft.com","chriss@microsoft.com","yumeng@microsoft.com","johanste@microsoft.com","anuchan@microsoft.com","savaity@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:41:00Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring;","query":"select + * from adsample2 where Timestamp = @StartTime"}}],"@nextLink":null}' + headers: + apim-request-id: + - 63e5efa1-384f-44ce-b882-9c8964546a52 + content-length: + - '4961' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 01:43:55 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '241' + x-request-id: + - 63e5efa1-384f-44ce-b882-9c8964546a52 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds_with_data_feed_name.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds_with_data_feed_name.yaml new file mode 100644 index 000000000000..adf66f8fb93d --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds_with_data_feed_name.yaml @@ -0,0 +1,38 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds?dataFeedName=testDataFeed1 + response: + body: + string: '{"value":[{"dataFeedId":"data_feed_id","dataFeedName":"testDataFeed1","metrics":[{"metricId":"metric_id","metricName":"Metric1","metricDisplayName":"Metric1","metricDescription":""},{"metricId":"6b593f73-345c-40eb-a15c-7ec1fc73b028","metricName":"Metric2","metricDisplayName":"Metric2","metricDescription":""}],"dimension":[{"dimensionName":"Dim1","dimensionDisplayName":"Dim1"},{"dimensionName":"Dim2","dimensionDisplayName":"Dim2"}],"dataStartFrom":"2020-08-09T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"Timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["anuchan@microsoft.com","xiangyan@microsoft.com","krpratic@microsoft.com","mayurid@microsoft.com","savaity@microsoft.com","yumeng@microsoft.com","camaiaor@microsoft.com","kaghiya@microsoft.com","johanste@microsoft.com","kaolsze@microsoft.com","chriss@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:43:30Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"connectionstring","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json","jsonFormatVersion":"V2"}}],"@nextLink":null}' + headers: + apim-request-id: + - bbf5e272-5515-4bfb-ad39-c0abad6155ff + content-length: + - '1933' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 01:43:57 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '693' + x-request-id: + - bbf5e272-5515-4bfb-ad39-c0abad6155ff + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds_with_granularity_type.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds_with_granularity_type.yaml new file mode 100644 index 000000000000..68ff413be34f --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds_with_granularity_type.yaml @@ -0,0 +1,41 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds?granularityName=Daily + response: + body: + string: '{"value":[{"dataFeedId":"cf291ce6-ea8e-409b-b17d-bed01cc57dc0","dataFeedName":"updated + name","metrics":[{"metricId":"af6224d9-cbd2-43ac-914b-0d9cc5a6132e","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"b4a6347b-0696-4541-954d-4fb0a307acfb","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-02T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"updated + description","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":["krpratic@microsoft.com"],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-16T19:36:50Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"no","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json"}},{"dataFeedId":"data_feed_id","dataFeedName":"testDataFeed1","metrics":[{"metricId":"metric_id","metricName":"Metric1","metricDisplayName":"Metric1","metricDescription":""},{"metricId":"6b593f73-345c-40eb-a15c-7ec1fc73b028","metricName":"Metric2","metricDisplayName":"Metric2","metricDescription":""}],"dimension":[{"dimensionName":"Dim1","dimensionDisplayName":"Dim1"},{"dimensionName":"Dim2","dimensionDisplayName":"Dim2"}],"dataStartFrom":"2020-08-09T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"Timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["savaity@microsoft.com","krpratic@microsoft.com","yumeng@microsoft.com","xiangyan@microsoft.com","anuchan@microsoft.com","chriss@microsoft.com","mayurid@microsoft.com","johanste@microsoft.com","camaiaor@microsoft.com","kaolsze@microsoft.com","kaghiya@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:43:30Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"connectionstring","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json","jsonFormatVersion":"V2"}},{"dataFeedId":"b9dae651-63bc-4a98-a7c5-d8322b20c962","dataFeedName":"azsqlDatafeed","metrics":[{"metricId":"802153a9-1671-4a6f-901e-66bbf09384d9","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"f05c2f81-1e96-47ed-baa1-ab1a2d35562a","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2020-08-11T00:00:00Z","dataSourceType":"SqlServer","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":"__SUM__","needRollup":"NeedRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"Sum","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["kaolsze@microsoft.com","camaiaor@microsoft.com","mayurid@microsoft.com","krpratic@microsoft.com","kaghiya@microsoft.com","xiangyan@microsoft.com","chriss@microsoft.com","yumeng@microsoft.com","johanste@microsoft.com","anuchan@microsoft.com","savaity@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:41:00Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring;","query":"select + * from adsample2 where Timestamp = @StartTime"}}],"@nextLink":null}' + headers: + apim-request-id: + - 25d7dbad-d7bc-4bc7-b1fd-89c2de88593c + content-length: + - '4961' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 01:43:58 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '328' + x-request-id: + - 25d7dbad-d7bc-4bc7-b1fd-89c2de88593c + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds_with_skip.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds_with_skip.yaml new file mode 100644 index 000000000000..f7ad9532d7f3 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds_with_skip.yaml @@ -0,0 +1,78 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '{"value":[{"dataFeedId":"cf291ce6-ea8e-409b-b17d-bed01cc57dc0","dataFeedName":"updated + name","metrics":[{"metricId":"af6224d9-cbd2-43ac-914b-0d9cc5a6132e","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"b4a6347b-0696-4541-954d-4fb0a307acfb","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-02T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"updated + description","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":["krpratic@microsoft.com"],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-16T19:36:50Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"no","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json"}},{"dataFeedId":"data_feed_id","dataFeedName":"testDataFeed1","metrics":[{"metricId":"metric_id","metricName":"Metric1","metricDisplayName":"Metric1","metricDescription":""},{"metricId":"6b593f73-345c-40eb-a15c-7ec1fc73b028","metricName":"Metric2","metricDisplayName":"Metric2","metricDescription":""}],"dimension":[{"dimensionName":"Dim1","dimensionDisplayName":"Dim1"},{"dimensionName":"Dim2","dimensionDisplayName":"Dim2"}],"dataStartFrom":"2020-08-09T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"Timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["savaity@microsoft.com","krpratic@microsoft.com","yumeng@microsoft.com","xiangyan@microsoft.com","anuchan@microsoft.com","chriss@microsoft.com","mayurid@microsoft.com","johanste@microsoft.com","camaiaor@microsoft.com","kaolsze@microsoft.com","kaghiya@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:43:30Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"connectionstring","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json","jsonFormatVersion":"V2"}},{"dataFeedId":"b9dae651-63bc-4a98-a7c5-d8322b20c962","dataFeedName":"azsqlDatafeed","metrics":[{"metricId":"802153a9-1671-4a6f-901e-66bbf09384d9","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"f05c2f81-1e96-47ed-baa1-ab1a2d35562a","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2020-08-11T00:00:00Z","dataSourceType":"SqlServer","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":"__SUM__","needRollup":"NeedRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"Sum","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["kaolsze@microsoft.com","camaiaor@microsoft.com","mayurid@microsoft.com","krpratic@microsoft.com","kaghiya@microsoft.com","xiangyan@microsoft.com","chriss@microsoft.com","yumeng@microsoft.com","johanste@microsoft.com","anuchan@microsoft.com","savaity@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:41:00Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring;","query":"select + * from adsample2 where Timestamp = @StartTime"}}],"@nextLink":null}' + headers: + apim-request-id: + - 993fde3d-bf33-4450-b2aa-237588819669 + content-length: + - '4961' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 01:43:59 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '232' + x-request-id: + - 993fde3d-bf33-4450-b2aa-237588819669 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds?$skip=1 + response: + body: + string: '{"value":[{"dataFeedId":"data_feed_id","dataFeedName":"testDataFeed1","metrics":[{"metricId":"metric_id","metricName":"Metric1","metricDisplayName":"Metric1","metricDescription":""},{"metricId":"6b593f73-345c-40eb-a15c-7ec1fc73b028","metricName":"Metric2","metricDisplayName":"Metric2","metricDescription":""}],"dimension":[{"dimensionName":"Dim1","dimensionDisplayName":"Dim1"},{"dimensionName":"Dim2","dimensionDisplayName":"Dim2"}],"dataStartFrom":"2020-08-09T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"Timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["savaity@microsoft.com","krpratic@microsoft.com","yumeng@microsoft.com","xiangyan@microsoft.com","anuchan@microsoft.com","chriss@microsoft.com","mayurid@microsoft.com","johanste@microsoft.com","camaiaor@microsoft.com","kaolsze@microsoft.com","kaghiya@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:43:30Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"connectionstring","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json","jsonFormatVersion":"V2"}},{"dataFeedId":"b9dae651-63bc-4a98-a7c5-d8322b20c962","dataFeedName":"azsqlDatafeed","metrics":[{"metricId":"802153a9-1671-4a6f-901e-66bbf09384d9","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"f05c2f81-1e96-47ed-baa1-ab1a2d35562a","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2020-08-11T00:00:00Z","dataSourceType":"SqlServer","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":"__SUM__","needRollup":"NeedRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"Sum","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["kaolsze@microsoft.com","camaiaor@microsoft.com","mayurid@microsoft.com","krpratic@microsoft.com","kaghiya@microsoft.com","xiangyan@microsoft.com","chriss@microsoft.com","yumeng@microsoft.com","johanste@microsoft.com","anuchan@microsoft.com","savaity@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:41:00Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"connectionString":"connectionstring;","query":"select + * from adsample2 where Timestamp = @StartTime"}}],"@nextLink":null}' + headers: + apim-request-id: + - b3175b1e-6bc1-4239-9452-d4cb7ee05f3c + content-length: + - '3661' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 01:44:00 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '319' + x-request-id: + - b3175b1e-6bc1-4239-9452-d4cb7ee05f3c + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds_with_source_type.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds_with_source_type.yaml new file mode 100644 index 000000000000..b4c78c9e3a1c --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds_with_source_type.yaml @@ -0,0 +1,40 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds?dataSourceType=AzureBlob + response: + body: + string: '{"value":[{"dataFeedId":"cf291ce6-ea8e-409b-b17d-bed01cc57dc0","dataFeedName":"updated + name","metrics":[{"metricId":"af6224d9-cbd2-43ac-914b-0d9cc5a6132e","metricName":"cost","metricDisplayName":"cost","metricDescription":""},{"metricId":"b4a6347b-0696-4541-954d-4fb0a307acfb","metricName":"revenue","metricDisplayName":"revenue","metricDescription":""}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"category"},{"dimensionName":"city","dimensionDisplayName":"city"}],"dataStartFrom":"2019-01-02T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"updated + description","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["krpratic@microsoft.com"],"viewers":["krpratic@microsoft.com"],"creator":"krpratic@microsoft.com","status":"Active","createdTime":"2020-09-16T19:36:50Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"no","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json"}},{"dataFeedId":"data_feed_id","dataFeedName":"testDataFeed1","metrics":[{"metricId":"metric_id","metricName":"Metric1","metricDisplayName":"Metric1","metricDescription":""},{"metricId":"6b593f73-345c-40eb-a15c-7ec1fc73b028","metricName":"Metric2","metricDisplayName":"Metric2","metricDescription":""}],"dimension":[{"dimensionName":"Dim1","dimensionDisplayName":"Dim1"},{"dimensionName":"Dim2","dimensionDisplayName":"Dim2"}],"dataStartFrom":"2020-08-09T00:00:00Z","dataSourceType":"AzureBlob","timestampColumn":"Timestamp","startOffsetInSeconds":0,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":null,"needRollup":"NoRollup","fillMissingPointType":"SmartFilling","fillMissingPointValue":0.0,"rollUpMethod":"None","rollUpColumns":[],"dataFeedDescription":"","stopRetryAfterInSeconds":-1,"minRetryIntervalInSeconds":-1,"maxConcurrency":-1,"viewMode":"Private","admins":["anuchan@microsoft.com","xiangyan@microsoft.com","krpratic@microsoft.com","mayurid@microsoft.com","savaity@microsoft.com","yumeng@microsoft.com","camaiaor@microsoft.com","kaghiya@microsoft.com","johanste@microsoft.com","kaolsze@microsoft.com","chriss@microsoft.com"],"viewers":[],"creator":"savaity@microsoft.com","status":"Active","createdTime":"2020-09-12T00:43:30Z","isAdmin":true,"actionLinkTemplate":"","dataSourceParameter":{"container":"adsample","connectionString":"connectionstring","blobTemplate":"%Y/%m/%d/%h/JsonFormatV2.json","jsonFormatVersion":"V2"}}],"@nextLink":null}' + headers: + apim-request-id: + - 197bf079-7b3e-4410-b270-ffa87012f7fe + content-length: + - '3233' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 01:44:02 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '1166' + x-request-id: + - 197bf079-7b3e-4410-b270-ffa87012f7fe + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds_with_status.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds_with_status.yaml new file mode 100644 index 000000000000..ff1180a0fc04 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_list_data_feeds_with_status.yaml @@ -0,0 +1,38 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds?status=Paused + response: + body: + string: '{"value":[],"@nextLink":null}' + headers: + apim-request-id: + - 9d6c992f-6701-4a07-96df-15e72b6a8262 + content-length: + - '29' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 01:44:04 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '185' + x-request-id: + - 9d6c992f-6701-4a07-96df-15e72b6a8262 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_update_data_feed_by_reseting_properties.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_update_data_feed_by_reseting_properties.yaml new file mode 100644 index 000000000000..bd780a1b1fac --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_update_data_feed_by_reseting_properties.yaml @@ -0,0 +1,217 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "updatee4bd1882", "dataFeedDescription": + "my first data feed", "granularityName": "Daily", "metrics": [{"metricName": + "cost", "metricDisplayName": "display cost", "metricDescription": "the cost"}, + {"metricName": "revenue", "metricDisplayName": "display revenue", "metricDescription": + "the revenue"}], "dimension": [{"dimensionName": "category", "dimensionDisplayName": + "display category"}, {"dimensionName": "city", "dimensionDisplayName": "display + city"}], "timestampColumn": "Timestamp", "dataStartFrom": "2019-10-01T00:00:00.000Z", + "startOffsetInSeconds": -1, "maxConcurrency": 0, "minRetryIntervalInSeconds": + -1, "stopRetryAfterInSeconds": -1, "needRollup": "NoRollup", "rollUpMethod": + "None", "fillMissingPointType": "SmartFilling", "viewMode": "Private", "admins": + ["yournamehere@microsoft.com"], "viewers": ["viewers"], "actionLinkTemplate": + "action link template", "dataSourceParameter": {"connectionString": "connectionstring", + "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1301' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - ecf2ce10-f099-4b56-91e8-b6d1181c9778 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 17:52:52 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/28ac7dc4-5f90-4f9b-bbee-6dd52d77253b + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '468' + x-request-id: + - ecf2ce10-f099-4b56-91e8-b6d1181c9778 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/28ac7dc4-5f90-4f9b-bbee-6dd52d77253b + response: + body: + string: "{\"dataFeedId\":\"28ac7dc4-5f90-4f9b-bbee-6dd52d77253b\",\"dataFeedName\":\"updatee4bd1882\",\"metrics\":[{\"metricId\":\"06a07263-f6f4-48c4-8c26-d65987a9c6bb\",\"metricName\":\"cost\",\"metricDisplayName\":\"display + cost\",\"metricDescription\":\"the cost\"},{\"metricId\":\"80ec44d6-f7ff-45ea-9bdd-12ce7c07cc08\",\"metricName\":\"revenue\",\"metricDisplayName\":\"display + revenue\",\"metricDescription\":\"the revenue\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"display + category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"display + city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"Timestamp\",\"startOffsetInSeconds\":-1,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"SmartFilling\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"my + first data feed\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":0,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\",\"yournamehere@microsoft.com\"],\"viewers\":[\"viewers\"],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T17:52:52Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"action + link template\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 0f377ed8-2e5d-4f63-a16f-452364a6e0b5 + content-length: + - '1622' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 17:52:52 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '133' + x-request-id: + - 0f377ed8-2e5d-4f63-a16f-452364a6e0b5 + status: + code: 200 + message: OK +- request: + body: '{"dataFeedName": "update", "dataFeedDescription": null, "timestampColumn": + null, "startOffsetInSeconds": null, "maxConcurrency": null, "minRetryIntervalInSeconds": + null, "stopRetryAfterInSeconds": null, "needRollup": null, "rollUpMethod": null, + "rollUpColumns": null, "allUpIdentification": null, "fillMissingPointType": + null, "fillMissingPointValue": null, "viewMode": null, "viewers": null, "status": + null, "actionLinkTemplate": null}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '436' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/28ac7dc4-5f90-4f9b-bbee-6dd52d77253b + response: + body: + string: '' + headers: + apim-request-id: + - c3c4b4a8-45fc-447e-a2ab-560344d6c14e + content-length: + - '0' + date: + - Mon, 21 Sep 2020 17:52:52 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '142' + x-request-id: + - c3c4b4a8-45fc-447e-a2ab-560344d6c14e + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/28ac7dc4-5f90-4f9b-bbee-6dd52d77253b + response: + body: + string: "{\"dataFeedId\":\"28ac7dc4-5f90-4f9b-bbee-6dd52d77253b\",\"dataFeedName\":\"update\",\"metrics\":[{\"metricId\":\"06a07263-f6f4-48c4-8c26-d65987a9c6bb\",\"metricName\":\"cost\",\"metricDisplayName\":\"display + cost\",\"metricDescription\":\"the cost\"},{\"metricId\":\"80ec44d6-f7ff-45ea-9bdd-12ce7c07cc08\",\"metricName\":\"revenue\",\"metricDisplayName\":\"display + revenue\",\"metricDescription\":\"the revenue\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"display + category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"display + city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"Timestamp\",\"startOffsetInSeconds\":-1,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"SmartFilling\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"my + first data feed\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":0,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\",\"yournamehere@microsoft.com\"],\"viewers\":[\"viewers\"],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T17:52:52Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"action + link template\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 9bc72481-533b-43e1-8312-5faad0c5064d + content-length: + - '1614' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 17:52:53 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '126' + x-request-id: + - 9bc72481-533b-43e1-8312-5faad0c5064d + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/28ac7dc4-5f90-4f9b-bbee-6dd52d77253b + response: + body: + string: '' + headers: + apim-request-id: + - 62308605-6243-443e-b916-e0663fc6e15a + content-length: + - '0' + date: + - Mon, 21 Sep 2020 17:52:53 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '261' + x-request-id: + - 62308605-6243-443e-b916-e0663fc6e15a + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_update_data_feed_with_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_update_data_feed_with_kwargs.yaml new file mode 100644 index 000000000000..ddb086375ea4 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_update_data_feed_with_kwargs.yaml @@ -0,0 +1,217 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "updateef1e13e5", "dataFeedDescription": + "my first data feed", "granularityName": "Daily", "metrics": [{"metricName": + "cost", "metricDisplayName": "display cost", "metricDescription": "the cost"}, + {"metricName": "revenue", "metricDisplayName": "display revenue", "metricDescription": + "the revenue"}], "dimension": [{"dimensionName": "category", "dimensionDisplayName": + "display category"}, {"dimensionName": "city", "dimensionDisplayName": "display + city"}], "timestampColumn": "Timestamp", "dataStartFrom": "2019-10-01T00:00:00.000Z", + "startOffsetInSeconds": -1, "maxConcurrency": 0, "minRetryIntervalInSeconds": + -1, "stopRetryAfterInSeconds": -1, "needRollup": "NoRollup", "rollUpMethod": + "None", "fillMissingPointType": "SmartFilling", "viewMode": "Private", "admins": + ["yournamehere@microsoft.com"], "viewers": ["viewers"], "actionLinkTemplate": + "action link template", "dataSourceParameter": {"connectionString": "connectionstring", + "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1301' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 8015192b-b1f8-42e1-b96f-a47a5469b903 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 17:58:53 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/ae2d8543-288c-4afa-954e-47d260be2dd0 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '505' + x-request-id: + - 8015192b-b1f8-42e1-b96f-a47a5469b903 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/ae2d8543-288c-4afa-954e-47d260be2dd0 + response: + body: + string: "{\"dataFeedId\":\"ae2d8543-288c-4afa-954e-47d260be2dd0\",\"dataFeedName\":\"updateef1e13e5\",\"metrics\":[{\"metricId\":\"e9e70e75-58d6-4c9c-8532-a21358070340\",\"metricName\":\"cost\",\"metricDisplayName\":\"display + cost\",\"metricDescription\":\"the cost\"},{\"metricId\":\"8537fc40-4632-43b1-9540-ea95b06b2906\",\"metricName\":\"revenue\",\"metricDisplayName\":\"display + revenue\",\"metricDescription\":\"the revenue\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"display + category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"display + city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"Timestamp\",\"startOffsetInSeconds\":-1,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"SmartFilling\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"my + first data feed\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":0,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\",\"yournamehere@microsoft.com\"],\"viewers\":[\"viewers\"],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T17:58:54Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"action + link template\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 69ce5bed-bf0b-4b69-9192-d03ec5963569 + content-length: + - '1622' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 17:58:54 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '153' + x-request-id: + - 69ce5bed-bf0b-4b69-9192-d03ec5963569 + status: + code: 200 + message: OK +- request: + body: '{"dataFeedName": "update", "dataFeedDescription": "updated", "timestampColumn": + "time", "dataStartFrom": "2020-12-10T00:00:00.000Z", "startOffsetInSeconds": + 1, "maxConcurrency": 1, "minRetryIntervalInSeconds": 1, "stopRetryAfterInSeconds": + 1, "needRollup": "AlreadyRollup", "rollUpMethod": "Sum", "rollUpColumns": [], + "allUpIdentification": "sumrollup", "fillMissingPointType": "CustomValue", "fillMissingPointValue": + 2, "viewMode": "Public", "viewers": ["updated"], "status": "Paused", "actionLinkTemplate": + "updated", "dataSourceParameter": {"connectionString": "updated", "query": "get + data"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '596' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/ae2d8543-288c-4afa-954e-47d260be2dd0 + response: + body: + string: '' + headers: + apim-request-id: + - 3e428348-1d8b-45dd-8363-fa3978e2e042 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 17:58:55 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '669' + x-request-id: + - 3e428348-1d8b-45dd-8363-fa3978e2e042 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/ae2d8543-288c-4afa-954e-47d260be2dd0 + response: + body: + string: '{"dataFeedId":"ae2d8543-288c-4afa-954e-47d260be2dd0","dataFeedName":"update","metrics":[{"metricId":"e9e70e75-58d6-4c9c-8532-a21358070340","metricName":"cost","metricDisplayName":"display + cost","metricDescription":"the cost"},{"metricId":"8537fc40-4632-43b1-9540-ea95b06b2906","metricName":"revenue","metricDisplayName":"display + revenue","metricDescription":"the revenue"}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"display + category"},{"dimensionName":"city","dimensionDisplayName":"display city"}],"dataStartFrom":"2020-12-10T00:00:00Z","dataSourceType":"SqlServer","timestampColumn":"time","startOffsetInSeconds":1,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":"sumrollup","needRollup":"AlreadyRollup","fillMissingPointType":"CustomValue","fillMissingPointValue":2.0,"rollUpMethod":"Sum","rollUpColumns":[],"dataFeedDescription":"updated","stopRetryAfterInSeconds":1,"minRetryIntervalInSeconds":1,"maxConcurrency":1,"viewMode":"Public","admins":["krpratic@microsoft.com","yournamehere@microsoft.com"],"viewers":["updated"],"creator":"krpratic@microsoft.com","status":"Paused","createdTime":"2020-09-21T17:58:54Z","isAdmin":true,"actionLinkTemplate":"updated","dataSourceParameter":{"connectionString":"updated","query":"get + data"}}' + headers: + apim-request-id: + - 892b89a4-3830-4085-b8e8-691326c7675b + content-length: + - '1308' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 17:58:55 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '141' + x-request-id: + - 892b89a4-3830-4085-b8e8-691326c7675b + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/ae2d8543-288c-4afa-954e-47d260be2dd0 + response: + body: + string: '' + headers: + apim-request-id: + - c6bc6cf3-a916-4be8-baf9-ba0c6495e220 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 17:58:56 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '314' + x-request-id: + - c6bc6cf3-a916-4be8-baf9-ba0c6495e220 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_update_data_feed_with_model.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_update_data_feed_with_model.yaml new file mode 100644 index 000000000000..a353e737f081 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_update_data_feed_with_model.yaml @@ -0,0 +1,218 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "updatedb171367", "dataFeedDescription": + "my first data feed", "granularityName": "Daily", "metrics": [{"metricName": + "cost", "metricDisplayName": "display cost", "metricDescription": "the cost"}, + {"metricName": "revenue", "metricDisplayName": "display revenue", "metricDescription": + "the revenue"}], "dimension": [{"dimensionName": "category", "dimensionDisplayName": + "display category"}, {"dimensionName": "city", "dimensionDisplayName": "display + city"}], "timestampColumn": "Timestamp", "dataStartFrom": "2019-10-01T00:00:00.000Z", + "startOffsetInSeconds": -1, "maxConcurrency": 0, "minRetryIntervalInSeconds": + -1, "stopRetryAfterInSeconds": -1, "needRollup": "NoRollup", "rollUpMethod": + "None", "fillMissingPointType": "SmartFilling", "viewMode": "Private", "admins": + ["yournamehere@microsoft.com"], "viewers": ["viewers"], "actionLinkTemplate": + "action link template", "dataSourceParameter": {"connectionString": "connectionstring", + "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1301' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 9e95ae5b-ecda-4f57-a8c9-3a544910b743 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 15:47:36 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/efc3027e-057d-403b-b304-b6a554e1d82b + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '750' + x-request-id: + - 9e95ae5b-ecda-4f57-a8c9-3a544910b743 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/efc3027e-057d-403b-b304-b6a554e1d82b + response: + body: + string: "{\"dataFeedId\":\"efc3027e-057d-403b-b304-b6a554e1d82b\",\"dataFeedName\":\"updatedb171367\",\"metrics\":[{\"metricId\":\"a2f42191-a166-43d4-a260-99c247f12d94\",\"metricName\":\"cost\",\"metricDisplayName\":\"display + cost\",\"metricDescription\":\"the cost\"},{\"metricId\":\"56a56801-0c56-47b9-b436-e1598efc0c96\",\"metricName\":\"revenue\",\"metricDisplayName\":\"display + revenue\",\"metricDescription\":\"the revenue\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"display + category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"display + city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"Timestamp\",\"startOffsetInSeconds\":-1,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"SmartFilling\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"my + first data feed\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":0,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\",\"yournamehere@microsoft.com\"],\"viewers\":[\"viewers\"],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T15:47:37Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"action + link template\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 9d31b0e4-395d-46de-9369-5a7b9c53b13f + content-length: + - '1622' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 15:47:42 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5233' + x-request-id: + - 9d31b0e4-395d-46de-9369-5a7b9c53b13f + status: + code: 200 + message: OK +- request: + body: '{"dataSourceType": "SqlServer", "dataFeedName": "update", "dataFeedDescription": + "updated", "timestampColumn": "time", "dataStartFrom": "2020-12-10T00:00:00.000Z", + "startOffsetInSeconds": 1, "maxConcurrency": 1, "minRetryIntervalInSeconds": + 1, "stopRetryAfterInSeconds": 1, "needRollup": "AlreadyRollup", "rollUpMethod": + "Sum", "rollUpColumns": [], "allUpIdentification": "sumrollup", "fillMissingPointType": + "CustomValue", "fillMissingPointValue": 2.0, "viewMode": "Public", "admins": + ["krpratic@microsoft.com", "yournamehere@microsoft.com"], "viewers": ["updated"], + "status": "Paused", "actionLinkTemplate": "updated", "dataSourceParameter": + {"connectionString": "updated", "query": "get data"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '697' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/efc3027e-057d-403b-b304-b6a554e1d82b + response: + body: + string: '' + headers: + apim-request-id: + - 8a11422b-9496-45b0-99c3-79c9a9cffa28 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 15:48:06 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '583' + x-request-id: + - 8a11422b-9496-45b0-99c3-79c9a9cffa28 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/efc3027e-057d-403b-b304-b6a554e1d82b + response: + body: + string: '{"dataFeedId":"efc3027e-057d-403b-b304-b6a554e1d82b","dataFeedName":"update","metrics":[{"metricId":"a2f42191-a166-43d4-a260-99c247f12d94","metricName":"cost","metricDisplayName":"display + cost","metricDescription":"the cost"},{"metricId":"56a56801-0c56-47b9-b436-e1598efc0c96","metricName":"revenue","metricDisplayName":"display + revenue","metricDescription":"the revenue"}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"display + category"},{"dimensionName":"city","dimensionDisplayName":"display city"}],"dataStartFrom":"2020-12-10T00:00:00Z","dataSourceType":"SqlServer","timestampColumn":"time","startOffsetInSeconds":1,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":"sumrollup","needRollup":"AlreadyRollup","fillMissingPointType":"CustomValue","fillMissingPointValue":2.0,"rollUpMethod":"Sum","rollUpColumns":[],"dataFeedDescription":"updated","stopRetryAfterInSeconds":1,"minRetryIntervalInSeconds":1,"maxConcurrency":1,"viewMode":"Public","admins":["krpratic@microsoft.com","yournamehere@microsoft.com"],"viewers":["updated"],"creator":"krpratic@microsoft.com","status":"Paused","createdTime":"2020-09-21T15:47:37Z","isAdmin":true,"actionLinkTemplate":"updated","dataSourceParameter":{"connectionString":"updated","query":"get + data"}}' + headers: + apim-request-id: + - e1cc35a4-aa04-4e45-8187-35938e7cc14c + content-length: + - '1308' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 15:48:09 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '129' + x-request-id: + - e1cc35a4-aa04-4e45-8187-35938e7cc14c + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/efc3027e-057d-403b-b304-b6a554e1d82b + response: + body: + string: '' + headers: + apim-request-id: + - efef3d84-7e11-47ab-b523-cdb1c4e8df78 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 15:51:25 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '681' + x-request-id: + - efef3d84-7e11-47ab-b523-cdb1c4e8df78 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_update_data_feed_with_model_and_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_update_data_feed_with_model_and_kwargs.yaml new file mode 100644 index 000000000000..fb8ab2e80022 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_data_feeds.test_update_data_feed_with_model_and_kwargs.yaml @@ -0,0 +1,218 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "updatecaf917e7", "dataFeedDescription": + "my first data feed", "granularityName": "Daily", "metrics": [{"metricName": + "cost", "metricDisplayName": "display cost", "metricDescription": "the cost"}, + {"metricName": "revenue", "metricDisplayName": "display revenue", "metricDescription": + "the revenue"}], "dimension": [{"dimensionName": "category", "dimensionDisplayName": + "display category"}, {"dimensionName": "city", "dimensionDisplayName": "display + city"}], "timestampColumn": "Timestamp", "dataStartFrom": "2019-10-01T00:00:00.000Z", + "startOffsetInSeconds": -1, "maxConcurrency": 0, "minRetryIntervalInSeconds": + -1, "stopRetryAfterInSeconds": -1, "needRollup": "NoRollup", "rollUpMethod": + "None", "fillMissingPointType": "SmartFilling", "viewMode": "Private", "admins": + ["yournamehere@microsoft.com"], "viewers": ["viewers"], "actionLinkTemplate": + "action link template", "dataSourceParameter": {"connectionString": "connectionstring", + "query": "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1301' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - af6c6eb4-4a2d-4c49-ba57-842838edba4e + content-length: + - '0' + date: + - Mon, 21 Sep 2020 16:41:13 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/cbf593ca-a21f-4c1f-8cf8-cc216ebfd2b6 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '450' + x-request-id: + - af6c6eb4-4a2d-4c49-ba57-842838edba4e + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/cbf593ca-a21f-4c1f-8cf8-cc216ebfd2b6 + response: + body: + string: "{\"dataFeedId\":\"cbf593ca-a21f-4c1f-8cf8-cc216ebfd2b6\",\"dataFeedName\":\"updatecaf917e7\",\"metrics\":[{\"metricId\":\"f50cedc3-9054-4d74-ab98-4aa8b1cb7a38\",\"metricName\":\"cost\",\"metricDisplayName\":\"display + cost\",\"metricDescription\":\"the cost\"},{\"metricId\":\"cfe61b60-daa4-4bce-945c-670fd0bafad5\",\"metricName\":\"revenue\",\"metricDisplayName\":\"display + revenue\",\"metricDescription\":\"the revenue\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"display + category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"display + city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"Timestamp\",\"startOffsetInSeconds\":-1,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"SmartFilling\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"my + first data feed\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":0,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\",\"yournamehere@microsoft.com\"],\"viewers\":[\"viewers\"],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T16:41:13Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"action + link template\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - ef027329-8466-42f2-9829-d794fe3272a0 + content-length: + - '1622' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:41:13 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '148' + x-request-id: + - ef027329-8466-42f2-9829-d794fe3272a0 + status: + code: 200 + message: OK +- request: + body: '{"dataSourceType": "SqlServer", "dataFeedName": "updateMe", "dataFeedDescription": + "updateMe", "timestampColumn": "time", "dataStartFrom": "2020-12-10T00:00:00.000Z", + "startOffsetInSeconds": 1, "maxConcurrency": 1, "minRetryIntervalInSeconds": + 1, "stopRetryAfterInSeconds": 1, "needRollup": "AlreadyRollup", "rollUpMethod": + "Sum", "rollUpColumns": [], "allUpIdentification": "sumrollup", "fillMissingPointType": + "CustomValue", "fillMissingPointValue": 2.0, "viewMode": "Public", "admins": + ["krpratic@microsoft.com", "yournamehere@microsoft.com"], "viewers": ["updated"], + "status": "Paused", "actionLinkTemplate": "updated", "dataSourceParameter": + {"connectionString": "updated", "query": "get data"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '700' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/cbf593ca-a21f-4c1f-8cf8-cc216ebfd2b6 + response: + body: + string: '' + headers: + apim-request-id: + - 047c7fa0-dd87-4bcc-a730-d8740426295c + content-length: + - '0' + date: + - Mon, 21 Sep 2020 16:41:47 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '781' + x-request-id: + - 047c7fa0-dd87-4bcc-a730-d8740426295c + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/cbf593ca-a21f-4c1f-8cf8-cc216ebfd2b6 + response: + body: + string: '{"dataFeedId":"cbf593ca-a21f-4c1f-8cf8-cc216ebfd2b6","dataFeedName":"updateMe","metrics":[{"metricId":"f50cedc3-9054-4d74-ab98-4aa8b1cb7a38","metricName":"cost","metricDisplayName":"display + cost","metricDescription":"the cost"},{"metricId":"cfe61b60-daa4-4bce-945c-670fd0bafad5","metricName":"revenue","metricDisplayName":"display + revenue","metricDescription":"the revenue"}],"dimension":[{"dimensionName":"category","dimensionDisplayName":"display + category"},{"dimensionName":"city","dimensionDisplayName":"display city"}],"dataStartFrom":"2020-12-10T00:00:00Z","dataSourceType":"SqlServer","timestampColumn":"time","startOffsetInSeconds":1,"maxQueryPerMinute":30.0,"granularityName":"Daily","granularityAmount":null,"allUpIdentification":"sumrollup","needRollup":"AlreadyRollup","fillMissingPointType":"CustomValue","fillMissingPointValue":2.0,"rollUpMethod":"Sum","rollUpColumns":[],"dataFeedDescription":"updateMe","stopRetryAfterInSeconds":1,"minRetryIntervalInSeconds":1,"maxConcurrency":1,"viewMode":"Public","admins":["krpratic@microsoft.com","yournamehere@microsoft.com"],"viewers":["updated"],"creator":"krpratic@microsoft.com","status":"Paused","createdTime":"2020-09-21T16:41:13Z","isAdmin":true,"actionLinkTemplate":"updated","dataSourceParameter":{"connectionString":"updated","query":"get + data"}}' + headers: + apim-request-id: + - 40e83914-5536-4499-ae3a-883e2e9c064a + content-length: + - '1311' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:41:51 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '137' + x-request-id: + - 40e83914-5536-4499-ae3a-883e2e9c064a + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/cbf593ca-a21f-4c1f-8cf8-cc216ebfd2b6 + response: + body: + string: '' + headers: + apim-request-id: + - e4214788-a5cb-4fe9-aa74-b5ffb7f7288f + content-length: + - '0' + date: + - Mon, 21 Sep 2020 16:42:03 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '717' + x-request-id: + - e4214788-a5cb-4fe9-aa74-b5ffb7f7288f + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_create_email_hook.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_create_email_hook.yaml new file mode 100644 index 000000000000..1225984e3bf6 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_create_email_hook.yaml @@ -0,0 +1,153 @@ +interactions: +- request: + body: '{"hookType": "Email", "hookName": "testemailhook7b011ac9", "description": + "my email hook", "externalLink": "external link", "hookParameter": {"toList": + ["yournamehere@microsoft.com"]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '184' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: + - 5b8c9ac5-273f-414c-9024-d48a25f5a766 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:29 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/c2ad01d4-e78b-4770-b7cf-96808a9957ba + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5393' + x-request-id: + - 5b8c9ac5-273f-414c-9024-d48a25f5a766 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/c2ad01d4-e78b-4770-b7cf-96808a9957ba + response: + body: + string: '{"hookId":"c2ad01d4-e78b-4770-b7cf-96808a9957ba","hookName":"testemailhook7b011ac9","hookType":"Email","externalLink":"external + link","description":"my email hook","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["yournamehere@microsoft.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: + - 22a4ec1f-2bcf-434a-a4f8-2d453e9a8c24 + content-length: + - '287' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:30 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '127' + x-request-id: + - 22a4ec1f-2bcf-434a-a4f8-2d453e9a8c24 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/c2ad01d4-e78b-4770-b7cf-96808a9957ba + response: + body: + string: '' + headers: + apim-request-id: + - bb418a5a-ff5a-41d8-a6f4-581ac31fbfc0 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:30 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '166' + x-request-id: + - bb418a5a-ff5a-41d8-a6f4-581ac31fbfc0 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/c2ad01d4-e78b-4770-b7cf-96808a9957ba + response: + body: + string: '{"code":"ERROR_INVALID_PARAMETER","message":"hookId is invalid."}' + headers: + apim-request-id: + - 6e49b776-b62b-4b09-bed6-b1f1e449bd91 + content-length: + - '65' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:30 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '68' + x-request-id: + - 6e49b776-b62b-4b09-bed6-b1f1e449bd91 + status: + code: 404 + message: Not Found +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_create_web_hook.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_create_web_hook.yaml new file mode 100644 index 000000000000..0e7b93d83488 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_create_web_hook.yaml @@ -0,0 +1,153 @@ +interactions: +- request: + body: '{"hookType": "Webhook", "hookName": "testwebhook463019ff", "description": + "my web hook", "externalLink": "external link", "hookParameter": {"endpoint": + "https://httpbin.org/post"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '180' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: + - 6b117aaf-6526-4d99-b573-28b8822e6e8a + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:39 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/98aa2056-1e94-43ed-b24b-8f4ec462c77d + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '671' + x-request-id: + - 6b117aaf-6526-4d99-b573-28b8822e6e8a + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/98aa2056-1e94-43ed-b24b-8f4ec462c77d + response: + body: + string: '{"hookId":"98aa2056-1e94-43ed-b24b-8f4ec462c77d","hookName":"testwebhook463019ff","hookType":"Webhook","externalLink":"external + link","description":"my web hook","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"","password":"","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: + - 00da0f35-4b0b-41df-add3-d62588e6b6e5 + content-length: + - '340' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:39 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '136' + x-request-id: + - 00da0f35-4b0b-41df-add3-d62588e6b6e5 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/98aa2056-1e94-43ed-b24b-8f4ec462c77d + response: + body: + string: '' + headers: + apim-request-id: + - 5b5e3717-1e63-44df-9d69-cb48861ae0cf + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:40 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '155' + x-request-id: + - 5b5e3717-1e63-44df-9d69-cb48861ae0cf + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/98aa2056-1e94-43ed-b24b-8f4ec462c77d + response: + body: + string: '{"code":"ERROR_INVALID_PARAMETER","message":"hookId is invalid."}' + headers: + apim-request-id: + - 8ebe92ba-fa8e-4c41-9fc2-180d72f6d267 + content-length: + - '65' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:40 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '38' + x-request-id: + - 8ebe92ba-fa8e-4c41-9fc2-180d72f6d267 + status: + code: 404 + message: Not Found +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_list_hooks.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_list_hooks.yaml new file mode 100644 index 000000000000..a1fc0c102e9c --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_list_hooks.yaml @@ -0,0 +1,40 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '{"value":[{"hookId":"d25286fb-98b6-48b8-9a05-712871c0d4e1","hookName":"emailhook","hookType":"Email","externalLink":"","description":"","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["krpratic@microsoft.com"],"ccList":null,"bccList":null}},{"hookId":"3af3e00f-adf4-40eb-b01f-4cc12f58db45","hookName":"updatedWebHook1","hookType":"Webhook","externalLink":"my + external link","description":"","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"sdfsd","password":"","headers":{},"certificateKey":"","certificatePassword":""}},{"hookId":"b1befa30-37a6-4f4e-b195-c91788d2af9d","hookName":"web_hook","hookType":"Webhook","externalLink":"my + external link","description":"jadg","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"fsdgsd","password":"","headers":{},"certificateKey":"","certificatePassword":""}}],"@nextLink":null}' + headers: + apim-request-id: + - 4d72120a-d7f1-47e9-970f-b2c5ec98dcca + content-length: + - '940' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 01:42:38 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '251' + x-request-id: + - 4d72120a-d7f1-47e9-970f-b2c5ec98dcca + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_email_hook_by_resetting_properties.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_email_hook_by_resetting_properties.yaml new file mode 100644 index 000000000000..5d09586b4f8f --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_email_hook_by_resetting_properties.yaml @@ -0,0 +1,191 @@ +interactions: +- request: + body: '{"hookType": "Email", "hookName": "testhooka97917a5", "description": "my + email hook", "externalLink": "external link", "hookParameter": {"toList": ["yournamehere@microsoft.com"]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '179' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: + - 71f1d113-e446-4b2d-9486-694559e9f617 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:30:38 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/94f41c44-defe-434c-943d-16b1136fcefd + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '393' + x-request-id: + - 71f1d113-e446-4b2d-9486-694559e9f617 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/94f41c44-defe-434c-943d-16b1136fcefd + response: + body: + string: '{"hookId":"94f41c44-defe-434c-943d-16b1136fcefd","hookName":"testhooka97917a5","hookType":"Email","externalLink":"external + link","description":"my email hook","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["yournamehere@microsoft.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: + - 5167a4e1-8ab6-4285-aee9-55de425752fd + content-length: + - '282' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 21:30:39 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '130' + x-request-id: + - 5167a4e1-8ab6-4285-aee9-55de425752fd + status: + code: 200 + message: OK +- request: + body: '{"hookName": "reset", "description": null, "externalLink": null}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '64' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/94f41c44-defe-434c-943d-16b1136fcefd + response: + body: + string: '' + headers: + apim-request-id: + - 643d94dc-d4c6-4abb-a735-d397d3fd584d + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:31:01 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5204' + x-request-id: + - 643d94dc-d4c6-4abb-a735-d397d3fd584d + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/94f41c44-defe-434c-943d-16b1136fcefd + response: + body: + string: '{"hookId":"94f41c44-defe-434c-943d-16b1136fcefd","hookName":"reset","hookType":"Email","externalLink":"external + link","description":"my email hook","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["yournamehere@microsoft.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: + - 701d62ae-a037-4cf6-9f58-6934e07742d3 + content-length: + - '271' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 21:31:04 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '181' + x-request-id: + - 701d62ae-a037-4cf6-9f58-6934e07742d3 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/94f41c44-defe-434c-943d-16b1136fcefd + response: + body: + string: '' + headers: + apim-request-id: + - f9c7a91d-f87a-4fcb-b973-59cd7d52729e + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:32:02 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '10228' + x-request-id: + - f9c7a91d-f87a-4fcb-b973-59cd7d52729e + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_email_hook_with_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_email_hook_with_kwargs.yaml new file mode 100644 index 000000000000..69beae389ac0 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_email_hook_with_kwargs.yaml @@ -0,0 +1,191 @@ +interactions: +- request: + body: '{"hookType": "Email", "hookName": "testhookaa421294", "description": "my + email hook", "externalLink": "external link", "hookParameter": {"toList": ["yournamehere@microsoft.com"]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '179' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: + - 74cc45e8-9b00-4ede-9a39-fdd2f11c6086 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:21:33 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/9458781c-2759-4ead-9bb9-331c8c1ab155 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '7741' + x-request-id: + - 74cc45e8-9b00-4ede-9a39-fdd2f11c6086 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/9458781c-2759-4ead-9bb9-331c8c1ab155 + response: + body: + string: '{"hookId":"9458781c-2759-4ead-9bb9-331c8c1ab155","hookName":"testhookaa421294","hookType":"Email","externalLink":"external + link","description":"my email hook","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["yournamehere@microsoft.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: + - a7142f52-a799-47c1-9bd8-989ec6d66ae4 + content-length: + - '282' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 21:21:38 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5245' + x-request-id: + - a7142f52-a799-47c1-9bd8-989ec6d66ae4 + status: + code: 200 + message: OK +- request: + body: '{"hookName": "update", "description": "update", "externalLink": "update", + "hookType": "Email", "hookParameter": {"toList": ["myemail@m.com"]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '142' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/9458781c-2759-4ead-9bb9-331c8c1ab155 + response: + body: + string: '' + headers: + apim-request-id: + - 7b06e344-3e07-4f55-aa5b-3ebd1cf05adb + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:21:39 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '347' + x-request-id: + - 7b06e344-3e07-4f55-aa5b-3ebd1cf05adb + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/9458781c-2759-4ead-9bb9-331c8c1ab155 + response: + body: + string: '{"hookId":"9458781c-2759-4ead-9bb9-331c8c1ab155","hookName":"update","hookType":"Email","externalLink":"update","description":"update","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["myemail@m.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: + - 0303474c-980d-4b0f-9267-e58641d2676b + content-length: + - '245' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 21:21:39 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '197' + x-request-id: + - 0303474c-980d-4b0f-9267-e58641d2676b + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/9458781c-2759-4ead-9bb9-331c8c1ab155 + response: + body: + string: '' + headers: + apim-request-id: + - 2b7f5c96-dba7-4b4f-8b60-8278d622ca9d + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:21:40 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '185' + x-request-id: + - 2b7f5c96-dba7-4b4f-8b60-8278d622ca9d + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_email_hook_with_model.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_email_hook_with_model.yaml new file mode 100644 index 000000000000..f865db358f49 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_email_hook_with_model.yaml @@ -0,0 +1,192 @@ +interactions: +- request: + body: '{"hookType": "Email", "hookName": "testwebhook978c1216", "description": + "my email hook", "externalLink": "external link", "hookParameter": {"toList": + ["yournamehere@microsoft.com"]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '182' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: + - 0ec5b292-e211-47bc-830d-09120443613b + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:18:29 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/c30eb188-05d5-496e-88d4-b25b9ba34787 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '427' + x-request-id: + - 0ec5b292-e211-47bc-830d-09120443613b + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/c30eb188-05d5-496e-88d4-b25b9ba34787 + response: + body: + string: '{"hookId":"c30eb188-05d5-496e-88d4-b25b9ba34787","hookName":"testwebhook978c1216","hookType":"Email","externalLink":"external + link","description":"my email hook","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["yournamehere@microsoft.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: + - 127c66ed-7af7-4668-861d-5213e557528c + content-length: + - '285' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 21:18:30 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '159' + x-request-id: + - 127c66ed-7af7-4668-861d-5213e557528c + status: + code: 200 + message: OK +- request: + body: '{"hookType": "Email", "hookName": "update", "description": "update", "externalLink": + "update", "hookParameter": {"toList": ["myemail@m.com"]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '142' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/c30eb188-05d5-496e-88d4-b25b9ba34787 + response: + body: + string: '' + headers: + apim-request-id: + - 7a23fbc7-75db-48b5-bb93-474d6abef638 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:18:30 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '416' + x-request-id: + - 7a23fbc7-75db-48b5-bb93-474d6abef638 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/c30eb188-05d5-496e-88d4-b25b9ba34787 + response: + body: + string: '{"hookId":"c30eb188-05d5-496e-88d4-b25b9ba34787","hookName":"update","hookType":"Email","externalLink":"update","description":"update","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["myemail@m.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: + - 294669c2-96db-41be-a482-c3ca0161e57f + content-length: + - '245' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 21:18:31 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '130' + x-request-id: + - 294669c2-96db-41be-a482-c3ca0161e57f + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/c30eb188-05d5-496e-88d4-b25b9ba34787 + response: + body: + string: '' + headers: + apim-request-id: + - 39c7c615-9b19-4712-854b-ca4a0494f827 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:18:31 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '154' + x-request-id: + - 39c7c615-9b19-4712-854b-ca4a0494f827 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_email_hook_with_model_and_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_email_hook_with_model_and_kwargs.yaml new file mode 100644 index 000000000000..9aa691ce7eb3 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_email_hook_with_model_and_kwargs.yaml @@ -0,0 +1,191 @@ +interactions: +- request: + body: '{"hookType": "Email", "hookName": "testhook78f31696", "description": "my + email hook", "externalLink": "external link", "hookParameter": {"toList": ["yournamehere@microsoft.com"]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '179' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: + - 2ddc69f9-c8bd-4773-9546-aa347fe99183 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:23:22 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/6a9fe0d0-183a-4fc8-aa66-5dcba15f33ce + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '440' + x-request-id: + - 2ddc69f9-c8bd-4773-9546-aa347fe99183 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/6a9fe0d0-183a-4fc8-aa66-5dcba15f33ce + response: + body: + string: '{"hookId":"6a9fe0d0-183a-4fc8-aa66-5dcba15f33ce","hookName":"testhook78f31696","hookType":"Email","externalLink":"external + link","description":"my email hook","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["yournamehere@microsoft.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: + - f9d687ac-05a8-4702-b8b6-59094959e5ba + content-length: + - '282' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 21:23:22 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '152' + x-request-id: + - f9d687ac-05a8-4702-b8b6-59094959e5ba + status: + code: 200 + message: OK +- request: + body: '{"hookType": "Email", "hookName": "update", "description": "update", "externalLink": + "update", "hookParameter": {"toList": ["myemail@m.com"]}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '142' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/6a9fe0d0-183a-4fc8-aa66-5dcba15f33ce + response: + body: + string: '' + headers: + apim-request-id: + - 7f0c31b8-c77f-47e8-9a89-d81b76781e48 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:23:22 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '257' + x-request-id: + - 7f0c31b8-c77f-47e8-9a89-d81b76781e48 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/6a9fe0d0-183a-4fc8-aa66-5dcba15f33ce + response: + body: + string: '{"hookId":"6a9fe0d0-183a-4fc8-aa66-5dcba15f33ce","hookName":"update","hookType":"Email","externalLink":"update","description":"update","admins":["krpratic@microsoft.com"],"hookParameter":{"toList":["myemail@m.com"],"ccList":null,"bccList":null}}' + headers: + apim-request-id: + - a30d9589-9615-45af-9b9b-62a97f7d1251 + content-length: + - '245' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 21:23:23 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '127' + x-request-id: + - a30d9589-9615-45af-9b9b-62a97f7d1251 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/6a9fe0d0-183a-4fc8-aa66-5dcba15f33ce + response: + body: + string: '' + headers: + apim-request-id: + - 68471971-0574-4148-a7d1-b996421c1e26 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:23:23 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '177' + x-request-id: + - 68471971-0574-4148-a7d1-b996421c1e26 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_web_hook_by_resetting_properties.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_web_hook_by_resetting_properties.yaml new file mode 100644 index 000000000000..e60ce058c4ca --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_web_hook_by_resetting_properties.yaml @@ -0,0 +1,194 @@ +interactions: +- request: + body: '{"hookType": "Webhook", "hookName": "testhook7c3416db", "description": + "my web hook", "externalLink": "external link", "hookParameter": {"endpoint": + "https://httpbin.org/post", "username": "krista", "password": "123"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '218' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: + - b15342a2-c31a-4d71-b12c-7d97a60706c9 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 22:33:20 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/b5118a02-19bc-4a53-9456-7f2c4766b3ac + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '707' + x-request-id: + - b15342a2-c31a-4d71-b12c-7d97a60706c9 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/b5118a02-19bc-4a53-9456-7f2c4766b3ac + response: + body: + string: '{"hookId":"b5118a02-19bc-4a53-9456-7f2c4766b3ac","hookName":"testhook7c3416db","hookType":"Webhook","externalLink":"external + link","description":"my web hook","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"krista","password":"123","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: + - e9ded7b7-d19d-4127-8f3e-8c6e2622dfd4 + content-length: + - '346' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 22:33:21 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '134' + x-request-id: + - e9ded7b7-d19d-4127-8f3e-8c6e2622dfd4 + status: + code: 200 + message: OK +- request: + body: '{"hookName": "reset", "description": null, "externalLink": null, "hookType": + "Webhook", "hookParameter": {"endpoint": "https://httpbin.org/post", "username": + "myusername", "password": null}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '190' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/b5118a02-19bc-4a53-9456-7f2c4766b3ac + response: + body: + string: '' + headers: + apim-request-id: + - d1fbdd59-3d6d-4e3c-9e98-93a9dad05508 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 22:33:44 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '664' + x-request-id: + - d1fbdd59-3d6d-4e3c-9e98-93a9dad05508 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/b5118a02-19bc-4a53-9456-7f2c4766b3ac + response: + body: + string: '{"hookId":"b5118a02-19bc-4a53-9456-7f2c4766b3ac","hookName":"reset","hookType":"Webhook","externalLink":"external + link","description":"my web hook","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"myusername","password":"","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: + - 4fb0797d-1b9a-40f4-8547-fc99c730b65e + content-length: + - '336' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 22:33:48 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '143' + x-request-id: + - 4fb0797d-1b9a-40f4-8547-fc99c730b65e + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/b5118a02-19bc-4a53-9456-7f2c4766b3ac + response: + body: + string: '' + headers: + apim-request-id: + - b75541d1-c168-4988-b216-8d36b90d8649 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 22:34:37 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '223' + x-request-id: + - b75541d1-c168-4988-b216-8d36b90d8649 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_web_hook_with_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_web_hook_with_kwargs.yaml new file mode 100644 index 000000000000..14ea22e8fafa --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_web_hook_with_kwargs.yaml @@ -0,0 +1,193 @@ +interactions: +- request: + body: '{"hookType": "Webhook", "hookName": "testwebhook867511ca", "description": + "my web hook", "externalLink": "external link", "hookParameter": {"endpoint": + "https://httpbin.org/post", "username": "krista", "password": "123"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '221' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: + - 0db746ec-f6d2-406f-b8f0-d90b6365675a + content-length: + - '0' + date: + - Mon, 21 Sep 2020 22:17:24 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/cb9abc6e-cebf-44e7-8ea8-daf7cf4f0260 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '923' + x-request-id: + - 0db746ec-f6d2-406f-b8f0-d90b6365675a + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/cb9abc6e-cebf-44e7-8ea8-daf7cf4f0260 + response: + body: + string: '{"hookId":"cb9abc6e-cebf-44e7-8ea8-daf7cf4f0260","hookName":"testwebhook867511ca","hookType":"Webhook","externalLink":"external + link","description":"my web hook","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"krista","password":"123","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: + - a9dba69d-46a0-407a-b254-a277578a525f + content-length: + - '349' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 22:17:25 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '218' + x-request-id: + - a9dba69d-46a0-407a-b254-a277578a525f + status: + code: 200 + message: OK +- request: + body: '{"hookName": "update", "description": "update", "externalLink": "update", + "hookType": "Webhook", "hookParameter": {"endpoint": "https://httpbin.org/post", + "username": "myusername", "password": "password"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '205' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/cb9abc6e-cebf-44e7-8ea8-daf7cf4f0260 + response: + body: + string: '' + headers: + apim-request-id: + - b8d60a19-48d6-445e-a505-6d4e3cdf802b + content-length: + - '0' + date: + - Mon, 21 Sep 2020 22:17:26 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '736' + x-request-id: + - b8d60a19-48d6-445e-a505-6d4e3cdf802b + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/cb9abc6e-cebf-44e7-8ea8-daf7cf4f0260 + response: + body: + string: '{"hookId":"cb9abc6e-cebf-44e7-8ea8-daf7cf4f0260","hookName":"update","hookType":"Webhook","externalLink":"update","description":"update","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"myusername","password":"password","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: + - 2ac9eed5-1143-40b6-bb02-d24adcf8bb5e + content-length: + - '333' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 22:17:32 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5194' + x-request-id: + - 2ac9eed5-1143-40b6-bb02-d24adcf8bb5e + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/cb9abc6e-cebf-44e7-8ea8-daf7cf4f0260 + response: + body: + string: '' + headers: + apim-request-id: + - 9586da5d-aa71-4c49-9738-076be17e8ec5 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 22:17:32 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '160' + x-request-id: + - 9586da5d-aa71-4c49-9738-076be17e8ec5 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_web_hook_with_model.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_web_hook_with_model.yaml new file mode 100644 index 000000000000..3cbcdb340dfd --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_web_hook_with_model.yaml @@ -0,0 +1,194 @@ +interactions: +- request: + body: '{"hookType": "Webhook", "hookName": "testwebhook7489114c", "description": + "my web hook", "externalLink": "external link", "hookParameter": {"endpoint": + "https://httpbin.org/post", "username": "krista", "password": "123"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '221' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: + - a2b17ffc-8b96-4158-b1bd-0c24579c8e37 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:42:05 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/02047f3c-ab28-48a2-a86e-3dedebf0dd29 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '648' + x-request-id: + - a2b17ffc-8b96-4158-b1bd-0c24579c8e37 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/02047f3c-ab28-48a2-a86e-3dedebf0dd29 + response: + body: + string: '{"hookId":"02047f3c-ab28-48a2-a86e-3dedebf0dd29","hookName":"testwebhook7489114c","hookType":"Webhook","externalLink":"external + link","description":"my web hook","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"krista","password":"123","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: + - ecc41116-97dd-4614-8214-068ec6874724 + content-length: + - '349' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 21:42:05 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '123' + x-request-id: + - ecc41116-97dd-4614-8214-068ec6874724 + status: + code: 200 + message: OK +- request: + body: '{"hookType": "Webhook", "hookName": "update", "description": "update", + "externalLink": "update", "hookParameter": {"endpoint": "https://httpbin.org/post", + "username": "myusername", "password": "password", "certificateKey": "", "certificatePassword": + ""}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '254' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/02047f3c-ab28-48a2-a86e-3dedebf0dd29 + response: + body: + string: '' + headers: + apim-request-id: + - 17bdfbbf-ec6a-4817-bd1c-0e9cc27a28c5 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:42:06 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '644' + x-request-id: + - 17bdfbbf-ec6a-4817-bd1c-0e9cc27a28c5 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/02047f3c-ab28-48a2-a86e-3dedebf0dd29 + response: + body: + string: '{"hookId":"02047f3c-ab28-48a2-a86e-3dedebf0dd29","hookName":"update","hookType":"Webhook","externalLink":"update","description":"update","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"myusername","password":"password","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: + - 5fcae961-7a48-451f-826b-23050d3ef003 + content-length: + - '333' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 21:42:06 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '140' + x-request-id: + - 5fcae961-7a48-451f-826b-23050d3ef003 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/02047f3c-ab28-48a2-a86e-3dedebf0dd29 + response: + body: + string: '' + headers: + apim-request-id: + - 84051f7f-98ab-4f06-a97b-cec1b30a2143 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:45:22 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '157' + x-request-id: + - 84051f7f-98ab-4f06-a97b-cec1b30a2143 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_web_hook_with_model_and_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_web_hook_with_model_and_kwargs.yaml new file mode 100644 index 000000000000..160a85dbdca1 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_hooks.test_update_web_hook_with_model_and_kwargs.yaml @@ -0,0 +1,194 @@ +interactions: +- request: + body: '{"hookType": "Webhook", "hookName": "testwebhook4d4215cc", "description": + "my web hook", "externalLink": "external link", "hookParameter": {"endpoint": + "https://httpbin.org/post", "username": "krista", "password": "123"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '221' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks + response: + body: + string: '' + headers: + apim-request-id: + - fea8db59-357c-4c6a-a8e3-800eae03da65 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 22:19:21 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/e6eca5e4-5e0a-4b92-a4d5-f774cb5b1289 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '653' + x-request-id: + - fea8db59-357c-4c6a-a8e3-800eae03da65 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/e6eca5e4-5e0a-4b92-a4d5-f774cb5b1289 + response: + body: + string: '{"hookId":"e6eca5e4-5e0a-4b92-a4d5-f774cb5b1289","hookName":"testwebhook4d4215cc","hookType":"Webhook","externalLink":"external + link","description":"my web hook","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"krista","password":"123","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: + - 26c9362d-f364-4b09-9437-743ce5b9bdbe + content-length: + - '349' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 22:19:21 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '156' + x-request-id: + - 26c9362d-f364-4b09-9437-743ce5b9bdbe + status: + code: 200 + message: OK +- request: + body: '{"hookType": "Webhook", "hookName": "update", "description": "updateMe", + "externalLink": "update", "hookParameter": {"endpoint": "https://httpbin.org/post", + "username": "myusername", "password": "password", "certificateKey": "", "certificatePassword": + ""}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '256' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/e6eca5e4-5e0a-4b92-a4d5-f774cb5b1289 + response: + body: + string: '' + headers: + apim-request-id: + - e89e5fda-83dc-44d2-8677-5898bcf0382f + content-length: + - '0' + date: + - Mon, 21 Sep 2020 22:19:22 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '582' + x-request-id: + - e89e5fda-83dc-44d2-8677-5898bcf0382f + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/e6eca5e4-5e0a-4b92-a4d5-f774cb5b1289 + response: + body: + string: '{"hookId":"e6eca5e4-5e0a-4b92-a4d5-f774cb5b1289","hookName":"update","hookType":"Webhook","externalLink":"update","description":"updateMe","admins":["krpratic@microsoft.com"],"hookParameter":{"endpoint":"https://httpbin.org/post","username":"myusername","password":"password","headers":{},"certificateKey":"","certificatePassword":""}}' + headers: + apim-request-id: + - 650262d8-ce25-4710-bb9e-0fefb010544c + content-length: + - '335' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 22:19:22 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '174' + x-request-id: + - 650262d8-ce25-4710-bb9e-0fefb010544c + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/hooks/e6eca5e4-5e0a-4b92-a4d5-f774cb5b1289 + response: + body: + string: '' + headers: + apim-request-id: + - 14491d9e-3b77-4c43-8ba5-c98fd8239e80 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 22:19:23 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '150' + x-request-id: + - 14491d9e-3b77-4c43-8ba5-c98fd8239e80 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_create_detection_config_with_multiple_series_and_group_conditions.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_create_detection_config_with_multiple_series_and_group_conditions.yaml new file mode 100644 index 000000000000..ce03b067bd58 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_create_detection_config_with_multiple_series_and_group_conditions.yaml @@ -0,0 +1,227 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "datafeedforconfig6acc2ecc", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '781' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 215ebfe6-d08c-4895-9cb7-b348fba6391f + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:21 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/bd021393-1f4a-40b5-a0af-fc8708a555d1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '407' + x-request-id: + - 215ebfe6-d08c-4895-9cb7-b348fba6391f + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/bd021393-1f4a-40b5-a0af-fc8708a555d1 + response: + body: + string: "{\"dataFeedId\":\"bd021393-1f4a-40b5-a0af-fc8708a555d1\",\"dataFeedName\":\"datafeedforconfig6acc2ecc\",\"metrics\":[{\"metricId\":\"054c4324-e01a-4877-adb9-f38a9961af21\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"f29cb87c-25e0-444d-b7d0-38df587ec9d5\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-09T22:33:21Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - f951eb76-c978-4ae2-8f91-554d89abfc7f + content-length: + - '1499' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:21 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '144' + x-request-id: + - f951eb76-c978-4ae2-8f91-554d89abfc7f + status: + code: 200 + message: OK +- request: + body: '{"name": "multipledetectionconfigs6acc2ecc", "description": "My test metric + anomaly detection configuration", "metricId": "054c4324-e01a-4877-adb9-f38a9961af21", + "wholeMetricConfiguration": {"conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 50.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 50, "minRatio": 50.0}}, "hardThresholdCondition": {"lowerBound": + 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": {"changePercentage": + 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Sao Paulo"}}, "conditionOperator": "AND", + "smartDetectionCondition": {"sensitivity": 63.0, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 1, "minRatio": 100.0}}, "hardThresholdCondition": + {"lowerBound": 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": + {"changePercentage": 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, {"group": + {"dimension": {"city": "Seoul"}}, "conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "Shenzhen", "category": "Jewelry"}}, "conditionOperator": + "AND", "smartDetectionCondition": {"sensitivity": 63.0, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 1, "minRatio": 100.0}}, "hardThresholdCondition": + {"lowerBound": 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": + {"changePercentage": 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, {"series": + {"dimension": {"city": "Osaka", "category": "Cell Phones"}}, "conditionOperator": + "AND", "smartDetectionCondition": {"sensitivity": 63.0, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 1, "minRatio": 100.0}}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '2407' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 8e1a8372-37a8-417f-877e-248de8691dd0 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:21 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/e81e7d6d-ec70-4204-abc4-721f1cc9ab13 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '167' + x-request-id: + - 8e1a8372-37a8-417f-877e-248de8691dd0 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/e81e7d6d-ec70-4204-abc4-721f1cc9ab13 + response: + body: + string: '{"anomalyDetectionConfigurationId":"e81e7d6d-ec70-4204-abc4-721f1cc9ab13","name":"multipledetectionconfigs6acc2ecc","description":"My + test metric anomaly detection configuration","metricId":"054c4324-e01a-4877-adb9-f38a9961af21","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},{"group":{"dimension":{"city":"Seoul"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"c33f6e48b2a0fd3cda2b7d31e8fbc93f","dimension":{"city":"Shenzhen","category":"Jewelry"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},{"series":{"seriesId":"f0a20207926eb412b26a283f54aaca19","dimension":{"city":"Osaka","category":"Cell + Phones"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]}' + headers: + apim-request-id: + - 8e086071-6b66-404a-abfc-255dd1d6bb36 + content-length: + - '2354' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:23 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '102' + x-request-id: + - 8e086071-6b66-404a-abfc-255dd1d6bb36 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/bd021393-1f4a-40b5-a0af-fc8708a555d1 + response: + body: + string: '' + headers: + apim-request-id: + - 3f41abed-274c-4abb-a8f1-49c67c85fdf5 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:23 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '256' + x-request-id: + - 3f41abed-274c-4abb-a8f1-49c67c85fdf5 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_create_metric_anomaly_detection_config_with_series_and_group_conditions.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_create_metric_anomaly_detection_config_with_series_and_group_conditions.yaml new file mode 100644 index 000000000000..5cc51b5a7414 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_create_metric_anomaly_detection_config_with_series_and_group_conditions.yaml @@ -0,0 +1,212 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "adconfigget89353134", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '775' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 9c65926b-b429-431b-b88b-0ae9bb219076 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:31 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/61949be9-1469-447a-8263-9213d6fe0d8f + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '426' + x-request-id: + - 9c65926b-b429-431b-b88b-0ae9bb219076 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/61949be9-1469-447a-8263-9213d6fe0d8f + response: + body: + string: "{\"dataFeedId\":\"61949be9-1469-447a-8263-9213d6fe0d8f\",\"dataFeedName\":\"adconfigget89353134\",\"metrics\":[{\"metricId\":\"e25eea3d-9171-4593-9468-3df18d61afe6\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"c593d5a4-4dbe-440d-8c6d-836150a5febe\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-09T22:33:32Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 4d3c1d9f-2a03-4754-9bca-e26e08d1a979 + content-length: + - '1493' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:31 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '125' + x-request-id: + - 4d3c1d9f-2a03-4754-9bca-e26e08d1a979 + status: + code: 200 + message: OK +- request: + body: '{"name": "testdetectionconfiget89353134", "description": "My test metric + anomaly detection configuration", "metricId": "e25eea3d-9171-4593-9468-3df18d61afe6", + "wholeMetricConfiguration": {"conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 50.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 50, "minRatio": 50.0}}, "hardThresholdCondition": {"lowerBound": + 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": {"changePercentage": + 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Sao Paulo"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "Shenzhen", "category": "Jewelry"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1192' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 6abca6a2-b86b-4d02-b19a-0e16aa862614 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:32 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/757e3d3a-a43d-4980-b9f0-08660ab389d0 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '146' + x-request-id: + - 6abca6a2-b86b-4d02-b19a-0e16aa862614 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/757e3d3a-a43d-4980-b9f0-08660ab389d0 + response: + body: + string: '{"anomalyDetectionConfigurationId":"757e3d3a-a43d-4980-b9f0-08660ab389d0","name":"testdetectionconfiget89353134","description":"My + test metric anomaly detection configuration","metricId":"e25eea3d-9171-4593-9468-3df18d61afe6","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"58a0c9987cd578c4fe4e24fc5c346a8d","dimension":{"city":"Shenzhen","category":"Jewelry"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]}' + headers: + apim-request-id: + - 4d2ca108-11c5-4dfd-aad8-ca1351b9e328 + content-length: + - '1235' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:32 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '68' + x-request-id: + - 4d2ca108-11c5-4dfd-aad8-ca1351b9e328 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/61949be9-1469-447a-8263-9213d6fe0d8f + response: + body: + string: '' + headers: + apim-request-id: + - ccd7ef01-3dac-4703-af02-781b0644654e + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:33 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '272' + x-request-id: + - ccd7ef01-3dac-4703-af02-781b0644654e + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_create_metric_anomaly_detection_configuration_whole_series_detection.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_create_metric_anomaly_detection_configuration_whole_series_detection.yaml new file mode 100644 index 000000000000..ddb586455c51 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_create_metric_anomaly_detection_configuration_whole_series_detection.yaml @@ -0,0 +1,279 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "adconfigf9c93000", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '772' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - fe7c0893-445e-4725-b266-786aaf918842 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:34 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/87977091-f4ca-428f-b4ac-2a7e687a9148 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '314' + x-request-id: + - fe7c0893-445e-4725-b266-786aaf918842 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/87977091-f4ca-428f-b4ac-2a7e687a9148 + response: + body: + string: "{\"dataFeedId\":\"87977091-f4ca-428f-b4ac-2a7e687a9148\",\"dataFeedName\":\"adconfigf9c93000\",\"metrics\":[{\"metricId\":\"bdc1ce40-0067-4a20-9ff9-0dbe5b3214a6\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"a371dbfc-d925-476f-b900-f632647b0b27\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-09T22:33:34Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 08f92986-63f9-4069-8d81-9fe9dcb6cf34 + content-length: + - '1490' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:34 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '135' + x-request-id: + - 08f92986-63f9-4069-8d81-9fe9dcb6cf34 + status: + code: 200 + message: OK +- request: + body: '{"name": "testdetectionconfigf9c93000", "description": "My test metric + anomaly detection configuration", "metricId": "bdc1ce40-0067-4a20-9ff9-0dbe5b3214a6", + "wholeMetricConfiguration": {"conditionOperator": "OR", "smartDetectionCondition": + {"sensitivity": 50.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 50, "minRatio": 50.0}}, "hardThresholdCondition": {"lowerBound": + 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": {"changePercentage": + 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [], "seriesOverrideConfigurations": []}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '784' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - a38d86a3-2398-4704-a8fa-677129672272 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:35 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/d6f39367-293f-4691-9a34-9026494ee641 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '82' + x-request-id: + - a38d86a3-2398-4704-a8fa-677129672272 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/d6f39367-293f-4691-9a34-9026494ee641 + response: + body: + string: '{"anomalyDetectionConfigurationId":"d6f39367-293f-4691-9a34-9026494ee641","name":"testdetectionconfigf9c93000","description":"My + test metric anomaly detection configuration","metricId":"bdc1ce40-0067-4a20-9ff9-0dbe5b3214a6","wholeMetricConfiguration":{"conditionOperator":"OR","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}' + headers: + apim-request-id: + - 68a484a9-6d08-4511-95bf-9bc09128ea71 + content-length: + - '809' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:35 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '66' + x-request-id: + - 68a484a9-6d08-4511-95bf-9bc09128ea71 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/d6f39367-293f-4691-9a34-9026494ee641 + response: + body: + string: '' + headers: + apim-request-id: + - 05b36297-78db-4ff8-b160-38c8cfb7f492 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:35 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '82' + x-request-id: + - 05b36297-78db-4ff8-b160-38c8cfb7f492 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/d6f39367-293f-4691-9a34-9026494ee641 + response: + body: + string: '{"code":"Not Found","message":"Not found this AnomalyDetectionConfiguration. + TraceId: 4a2c9360-7312-4d2e-931e-c66d0b94c0fb"}' + headers: + apim-request-id: + - b6deee92-3c72-47a1-a1de-f2f45796dacd + content-length: + - '124' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 09 Sep 2020 22:33:35 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '42' + x-request-id: + - b6deee92-3c72-47a1-a1de-f2f45796dacd + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.18362-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/87977091-f4ca-428f-b4ac-2a7e687a9148 + response: + body: + string: '' + headers: + apim-request-id: + - a4b55c64-a769-4dd8-b9d7-f6b5160f69e1 + content-length: + - '0' + date: + - Wed, 09 Sep 2020 22:33:36 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '272' + x-request-id: + - a4b55c64-a769-4dd8-b9d7-f6b5160f69e1 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_list_metric_anomaly_detection_configs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_list_metric_anomaly_detection_configs.yaml new file mode 100644 index 000000000000..698c13e9e924 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_list_metric_anomaly_detection_configs.yaml @@ -0,0 +1,43 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/enrichment/anomalyDetection/configurations + response: + body: + string: '{"value":[{"anomalyDetectionConfigurationId":"2fe9e687-4c9e-4e1b-8ec8-6541553db969","name":"new + Name","description":"new description","metricId":"metric_id","wholeMetricConfiguration":{"conditionOperator":"OR","hardThresholdCondition":{"upperBound":500.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":44.0,"shiftPoint":2,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":4,"minRatio":4.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"Dim1":"Common + Lime"}},"hardThresholdCondition":{"upperBound":400.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":2,"minRatio":2.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"54bdef99c03c71c764fd3ea671cd1260","dimension":{"Dim1":"Common + Beech","Dim2":"Ant"}},"changeThresholdCondition":{"changePercentage":33.0,"shiftPoint":1,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}}]},{"anomalyDetectionConfigurationId":"bd309211-64b5-4a7a-bb81-a2789599c526","name":"js-all-as-anomaly","description":"","metricId":"metric_id","wholeMetricConfiguration":{"hardThresholdCondition":{"upperBound":0.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":1,"minRatio":100.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]},{"anomalyDetectionConfigurationId":"a420626b-b09b-4938-9bd3-91f263f50612","name":"test_detection_configuration_java","description":"","metricId":"metric_id","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":68.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":1,"minRatio":100.0}},"changeThresholdCondition":{"changePercentage":5.0,"shiftPoint":1,"anomalyDetectorDirection":"Up","withinRange":false,"suppressCondition":{"minNumber":1,"minRatio":100.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"Dim1":"Common + Alder"}},"smartDetectionCondition":{"sensitivity":80.0,"anomalyDetectorDirection":"Down","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"8f0847fcd60e1002241f4da0f02b6d57","dimension":{"Dim1":"Common + Alder","Dim2":"American robin"}},"smartDetectionCondition":{"sensitivity":68.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]},{"anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","name":"Default","description":"","metricId":"metric_id","wholeMetricConfiguration":{"smartDetectionCondition":{"sensitivity":60.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}},"dimensionGroupOverrideConfigurations":[],"seriesOverrideConfigurations":[]}]}' + headers: + apim-request-id: + - f5acd01c-fe04-4b0c-aaa6-a7819edff166 + content-length: + - '2925' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 01:42:28 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5214' + x-request-id: + - f5acd01c-fe04-4b0c-aaa6-a7819edff166 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_update_detection_config_by_resetting_properties.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_update_detection_config_by_resetting_properties.yaml new file mode 100644 index 000000000000..41b337404693 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_update_detection_config_by_resetting_properties.yaml @@ -0,0 +1,351 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "updatedetection712c24c4", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '778' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 8a626586-0862-42f7-8038-20453739f441 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:00:59 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/bd535e24-d23f-46c3-9a7d-aa29f1efe94f + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '380' + x-request-id: + - 8a626586-0862-42f7-8038-20453739f441 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/bd535e24-d23f-46c3-9a7d-aa29f1efe94f + response: + body: + string: '' + headers: + apim-request-id: + - 168be889-2dc3-4beb-8eae-7dc643a1c865 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:02:00 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '60117' + status: + code: 500 + message: Internal Server Error +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/bd535e24-d23f-46c3-9a7d-aa29f1efe94f + response: + body: + string: '' + headers: + apim-request-id: + - 0d3d8fc5-46bf-4e7b-93a1-9ec76a77dca6 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:02:59 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '60014' + status: + code: 500 + message: Internal Server Error +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/bd535e24-d23f-46c3-9a7d-aa29f1efe94f + response: + body: + string: "{\"dataFeedId\":\"bd535e24-d23f-46c3-9a7d-aa29f1efe94f\",\"dataFeedName\":\"updatedetection712c24c4\",\"metrics\":[{\"metricId\":\"f98e0a07-1943-4e40-9ca3-ecace6ac1373\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"0cb56820-b81e-4858-94f8-bda5f1a77663\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T21:00:59Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 247632ab-d44b-4dc8-afd8-f803745a718a + content-length: + - '1496' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 21:03:06 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5365' + x-request-id: + - 247632ab-d44b-4dc8-afd8-f803745a718a + status: + code: 200 + message: OK +- request: + body: '{"name": "testupdated712c24c4", "description": "My test metric anomaly + detection configuration", "metricId": "f98e0a07-1943-4e40-9ca3-ecace6ac1373", + "wholeMetricConfiguration": {"conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 50.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 50, "minRatio": 50.0}}, "hardThresholdCondition": {"lowerBound": + 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": {"changePercentage": + 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Sao Paulo"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "Shenzhen", "category": "Jewelry"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1182' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 8380fc50-1594-4d58-97cf-73f3b266eec4 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:03:07 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/498931bf-e33f-4e1b-a143-5c25591cfe34 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '437' + x-request-id: + - 8380fc50-1594-4d58-97cf-73f3b266eec4 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/498931bf-e33f-4e1b-a143-5c25591cfe34 + response: + body: + string: '{"anomalyDetectionConfigurationId":"498931bf-e33f-4e1b-a143-5c25591cfe34","name":"testupdated712c24c4","description":"My + test metric anomaly detection configuration","metricId":"f98e0a07-1943-4e40-9ca3-ecace6ac1373","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"209eb27d42476b9726283fd38fa2296a","dimension":{"city":"Shenzhen","category":"Jewelry"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]}' + headers: + apim-request-id: + - 9933343d-73a8-4cdd-982c-8ed2ac2136f8 + content-length: + - '1225' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 21:03:13 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5232' + x-request-id: + - 9933343d-73a8-4cdd-982c-8ed2ac2136f8 + status: + code: 200 + message: OK +- request: + body: '{"name": "reset", "description": ""}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '36' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/498931bf-e33f-4e1b-a143-5c25591cfe34 + response: + body: + string: '' + headers: + apim-request-id: + - bb05de64-0456-44de-8952-a2a9d70526fb + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:03:14 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '208' + x-request-id: + - bb05de64-0456-44de-8952-a2a9d70526fb + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/498931bf-e33f-4e1b-a143-5c25591cfe34 + response: + body: + string: '{"anomalyDetectionConfigurationId":"498931bf-e33f-4e1b-a143-5c25591cfe34","name":"reset","description":"","metricId":"f98e0a07-1943-4e40-9ca3-ecace6ac1373","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"209eb27d42476b9726283fd38fa2296a","dimension":{"city":"Shenzhen","category":"Jewelry"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]}' + headers: + apim-request-id: + - cad5fed9-104f-42f8-81f0-dd33ccded8e7 + content-length: + - '1165' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 21:03:14 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '148' + x-request-id: + - cad5fed9-104f-42f8-81f0-dd33ccded8e7 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/bd535e24-d23f-46c3-9a7d-aa29f1efe94f + response: + body: + string: '' + headers: + apim-request-id: + - 8341133c-1e03-4fe6-ab25-4a75432756fc + content-length: + - '0' + date: + - Mon, 21 Sep 2020 21:03:15 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '961' + x-request-id: + - 8341133c-1e03-4fe6-ab25-4a75432756fc + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_update_detection_config_with_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_update_detection_config_with_kwargs.yaml new file mode 100644 index 000000000000..b06e582c58c0 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_update_detection_config_with_kwargs.yaml @@ -0,0 +1,307 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "updatedetectiond4721fb3", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '778' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 5edec7d2-0205-4731-81d3-808978a40fd3 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 20:36:06 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/55989e51-d804-4518-8e02-52b98451d23c + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '933' + x-request-id: + - 5edec7d2-0205-4731-81d3-808978a40fd3 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/55989e51-d804-4518-8e02-52b98451d23c + response: + body: + string: "{\"dataFeedId\":\"55989e51-d804-4518-8e02-52b98451d23c\",\"dataFeedName\":\"updatedetectiond4721fb3\",\"metrics\":[{\"metricId\":\"d5c7fc8c-8400-4e97-9912-f867094c37a3\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"0606bfe8-79d0-4954-a52d-0693329a0dae\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T20:36:06Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 6cc15997-5814-4fe2-9058-84497dcea006 + content-length: + - '1496' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 20:36:06 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '269' + x-request-id: + - 6cc15997-5814-4fe2-9058-84497dcea006 + status: + code: 200 + message: OK +- request: + body: '{"name": "testupdatedd4721fb3", "description": "My test metric anomaly + detection configuration", "metricId": "d5c7fc8c-8400-4e97-9912-f867094c37a3", + "wholeMetricConfiguration": {"conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 50.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 50, "minRatio": 50.0}}, "hardThresholdCondition": {"lowerBound": + 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": {"changePercentage": + 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Sao Paulo"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "Shenzhen", "category": "Jewelry"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1182' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 5bc3e25a-1ce2-4b9a-9cbf-f3239e6b442a + content-length: + - '0' + date: + - Mon, 21 Sep 2020 20:36:07 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/a6a624e2-c89b-48d7-b7b0-8e7ae3949812 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '413' + x-request-id: + - 5bc3e25a-1ce2-4b9a-9cbf-f3239e6b442a + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/a6a624e2-c89b-48d7-b7b0-8e7ae3949812 + response: + body: + string: '{"anomalyDetectionConfigurationId":"a6a624e2-c89b-48d7-b7b0-8e7ae3949812","name":"testupdatedd4721fb3","description":"My + test metric anomaly detection configuration","metricId":"d5c7fc8c-8400-4e97-9912-f867094c37a3","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"e7249d8df02fe9cc820762c7d0fa9ef2","dimension":{"city":"Shenzhen","category":"Jewelry"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]}' + headers: + apim-request-id: + - 867e801e-8299-48e3-b038-6e07ea17dc74 + content-length: + - '1225' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 20:36:08 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '207' + x-request-id: + - 867e801e-8299-48e3-b038-6e07ea17dc74 + status: + code: 200 + message: OK +- request: + body: '{"name": "updated", "wholeMetricConfiguration": {"conditionOperator": "OR", + "smartDetectionCondition": {"sensitivity": 10.0, "anomalyDetectorDirection": + "Up", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}, "hardThresholdCondition": + {"upperBound": 100.0, "anomalyDetectorDirection": "Up", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}, "changeThresholdCondition": {"changePercentage": + 20.0, "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Shenzen"}}, "conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 10.0, "anomalyDetectorDirection": "Up", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}, "hardThresholdCondition": {"upperBound": + 100.0, "anomalyDetectorDirection": "Up", "suppressCondition": {"minNumber": + 5, "minRatio": 2.0}}, "changeThresholdCondition": {"changePercentage": 20.0, + "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "San Paulo", "category": "Jewelry"}}, "conditionOperator": + "AND", "smartDetectionCondition": {"sensitivity": 10.0, "anomalyDetectorDirection": + "Up", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}, "hardThresholdCondition": + {"upperBound": 100.0, "anomalyDetectorDirection": "Up", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}, "changeThresholdCondition": {"changePercentage": + 20.0, "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}}], "description": "updated"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1752' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/a6a624e2-c89b-48d7-b7b0-8e7ae3949812 + response: + body: + string: '' + headers: + apim-request-id: + - 4f89235c-2787-49a6-b06c-8df85ad32ae4 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 20:36:08 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '269' + x-request-id: + - 4f89235c-2787-49a6-b06c-8df85ad32ae4 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/a6a624e2-c89b-48d7-b7b0-8e7ae3949812 + response: + body: + string: '{"anomalyDetectionConfigurationId":"a6a624e2-c89b-48d7-b7b0-8e7ae3949812","name":"updated","description":"updated","metricId":"d5c7fc8c-8400-4e97-9912-f867094c37a3","wholeMetricConfiguration":{"conditionOperator":"OR","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Shenzen"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"b92e7cb13aa3022c4b44a2d4dc7305e1","dimension":{"city":"San + Paulo","category":"Jewelry"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}}]}' + headers: + apim-request-id: + - 0a32f92e-1067-4559-961d-1284ce47a522 + content-length: + - '1797' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 20:36:08 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '176' + x-request-id: + - 0a32f92e-1067-4559-961d-1284ce47a522 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/55989e51-d804-4518-8e02-52b98451d23c + response: + body: + string: '' + headers: + apim-request-id: + - c15e2218-abca-45b1-87ce-a177b6758f99 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 20:36:09 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '469' + x-request-id: + - c15e2218-abca-45b1-87ce-a177b6758f99 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_update_detection_config_with_model.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_update_detection_config_with_model.yaml new file mode 100644 index 000000000000..a0f9530e546e --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_update_detection_config_with_model.yaml @@ -0,0 +1,307 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "updatedetectionb49d1f35", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '778' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - 9caf6d26-c9f7-4a5b-a7f2-4e06ff24b873 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 20:20:59 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/91c965d1-8cf2-477a-bbd3-25c554d279de + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '630' + x-request-id: + - 9caf6d26-c9f7-4a5b-a7f2-4e06ff24b873 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/91c965d1-8cf2-477a-bbd3-25c554d279de + response: + body: + string: "{\"dataFeedId\":\"91c965d1-8cf2-477a-bbd3-25c554d279de\",\"dataFeedName\":\"updatedetectionb49d1f35\",\"metrics\":[{\"metricId\":\"b27773e2-6156-42fe-bc45-1436cc90c4eb\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"dc6641e5-7449-4667-8ca7-b222f56edaf6\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T20:20:59Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - 9ebacbc8-88f7-4d13-a4dc-21ec07a7c470 + content-length: + - '1496' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 20:20:59 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '236' + x-request-id: + - 9ebacbc8-88f7-4d13-a4dc-21ec07a7c470 + status: + code: 200 + message: OK +- request: + body: '{"name": "testupdatedb49d1f35", "description": "My test metric anomaly + detection configuration", "metricId": "b27773e2-6156-42fe-bc45-1436cc90c4eb", + "wholeMetricConfiguration": {"conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 50.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 50, "minRatio": 50.0}}, "hardThresholdCondition": {"lowerBound": + 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": {"changePercentage": + 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Sao Paulo"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "Shenzhen", "category": "Jewelry"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1182' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - 5af6b5c4-13e7-4355-84d1-9dddce330fff + content-length: + - '0' + date: + - Mon, 21 Sep 2020 20:21:05 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/0556e80a-efcd-4a22-9cf8-ef990b123fe7 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5289' + x-request-id: + - 5af6b5c4-13e7-4355-84d1-9dddce330fff + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/0556e80a-efcd-4a22-9cf8-ef990b123fe7 + response: + body: + string: '{"anomalyDetectionConfigurationId":"0556e80a-efcd-4a22-9cf8-ef990b123fe7","name":"testupdatedb49d1f35","description":"My + test metric anomaly detection configuration","metricId":"b27773e2-6156-42fe-bc45-1436cc90c4eb","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"bfac2674c70862f2fd32bbe0fff33a0d","dimension":{"city":"Shenzhen","category":"Jewelry"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]}' + headers: + apim-request-id: + - c2d1779c-c2f4-4645-8a2f-3a70fab7df71 + content-length: + - '1225' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 20:21:05 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '71' + x-request-id: + - c2d1779c-c2f4-4645-8a2f-3a70fab7df71 + status: + code: 200 + message: OK +- request: + body: '{"name": "updated", "description": "updated", "wholeMetricConfiguration": + {"conditionOperator": "OR", "smartDetectionCondition": {"sensitivity": 10.0, + "anomalyDetectorDirection": "Up", "suppressCondition": {"minNumber": 5, "minRatio": + 2.0}}, "hardThresholdCondition": {"upperBound": 100.0, "anomalyDetectorDirection": + "Up", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}, "changeThresholdCondition": + {"changePercentage": 20.0, "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Sao Paulo"}}, "conditionOperator": "AND", + "smartDetectionCondition": {"sensitivity": 10.0, "anomalyDetectorDirection": + "Up", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}, "hardThresholdCondition": + {"upperBound": 100.0, "anomalyDetectorDirection": "Up", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}, "changeThresholdCondition": {"changePercentage": + 20.0, "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}}], "seriesOverrideConfigurations": + [{"series": {"dimension": {"city": "Shenzhen", "category": "Jewelry"}}, "conditionOperator": + "AND", "smartDetectionCondition": {"sensitivity": 10.0, "anomalyDetectorDirection": + "Up", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}, "hardThresholdCondition": + {"upperBound": 100.0, "anomalyDetectorDirection": "Up", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}, "changeThresholdCondition": {"changePercentage": + 20.0, "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1753' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/0556e80a-efcd-4a22-9cf8-ef990b123fe7 + response: + body: + string: '' + headers: + apim-request-id: + - 09bcc7f5-c081-45a0-8176-391a3e333f28 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 20:21:05 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '174' + x-request-id: + - 09bcc7f5-c081-45a0-8176-391a3e333f28 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/0556e80a-efcd-4a22-9cf8-ef990b123fe7 + response: + body: + string: '{"anomalyDetectionConfigurationId":"0556e80a-efcd-4a22-9cf8-ef990b123fe7","name":"updated","description":"updated","metricId":"b27773e2-6156-42fe-bc45-1436cc90c4eb","wholeMetricConfiguration":{"conditionOperator":"OR","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"bfac2674c70862f2fd32bbe0fff33a0d","dimension":{"city":"Shenzhen","category":"Jewelry"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}}]}' + headers: + apim-request-id: + - 978fc5c6-0440-4574-966b-58afa64d9b81 + content-length: + - '1798' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 20:21:06 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '85' + x-request-id: + - 978fc5c6-0440-4574-966b-58afa64d9b81 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/91c965d1-8cf2-477a-bbd3-25c554d279de + response: + body: + string: '' + headers: + apim-request-id: + - e04dea87-cf32-42a0-8bb2-6434991da512 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 20:21:06 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '278' + x-request-id: + - e04dea87-cf32-42a0-8bb2-6434991da512 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_update_detection_config_with_model_and_kwargs.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_update_detection_config_with_model_and_kwargs.yaml new file mode 100644 index 000000000000..c798accaae42 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metric_anomaly_detection_config.test_update_detection_config_with_model_and_kwargs.yaml @@ -0,0 +1,307 @@ +interactions: +- request: + body: 'b''{"dataSourceType": "SqlServer", "dataFeedName": "updatedetection266823b5", + "granularityName": "Daily", "metrics": [{"metricName": "cost"}, {"metricName": + "revenue"}], "dimension": [{"dimensionName": "category"}, {"dimensionName": + "city"}], "dataStartFrom": "2019-10-01T00:00:00.000Z", "startOffsetInSeconds": + 0, "maxConcurrency": -1, "minRetryIntervalInSeconds": -1, "stopRetryAfterInSeconds": + -1, "dataSourceParameter": {"connectionString": "connectionstring", "query": + "select\\u202f*\\u202ffrom\\u202fadsample2\\u202fwhere\\u202fTimestamp\\u202f=\\u202f@StartTime"}}''' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '778' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds + response: + body: + string: '' + headers: + apim-request-id: + - a3fd0118-7da3-49b3-87a1-5500594d76a9 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 20:36:30 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/24d983fe-66b0-47d2-bdf0-0240b24eb87b + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '532' + x-request-id: + - a3fd0118-7da3-49b3-87a1-5500594d76a9 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/24d983fe-66b0-47d2-bdf0-0240b24eb87b + response: + body: + string: "{\"dataFeedId\":\"24d983fe-66b0-47d2-bdf0-0240b24eb87b\",\"dataFeedName\":\"updatedetection266823b5\",\"metrics\":[{\"metricId\":\"81a4fd73-6404-41e3-822e-98e96a8e6ecf\",\"metricName\":\"cost\",\"metricDisplayName\":\"cost\",\"metricDescription\":\"\"},{\"metricId\":\"35311945-eb2e-4f77-a201-d6e81b9a3ded\",\"metricName\":\"revenue\",\"metricDisplayName\":\"revenue\",\"metricDescription\":\"\"}],\"dimension\":[{\"dimensionName\":\"category\",\"dimensionDisplayName\":\"category\"},{\"dimensionName\":\"city\",\"dimensionDisplayName\":\"city\"}],\"dataStartFrom\":\"2019-10-01T00:00:00Z\",\"dataSourceType\":\"SqlServer\",\"timestampColumn\":\"\",\"startOffsetInSeconds\":0,\"maxQueryPerMinute\":30.0,\"granularityName\":\"Daily\",\"granularityAmount\":null,\"allUpIdentification\":null,\"needRollup\":\"NoRollup\",\"fillMissingPointType\":\"PreviousValue\",\"fillMissingPointValue\":0.0,\"rollUpMethod\":\"None\",\"rollUpColumns\":[],\"dataFeedDescription\":\"\",\"stopRetryAfterInSeconds\":-1,\"minRetryIntervalInSeconds\":-1,\"maxConcurrency\":-1,\"viewMode\":\"Private\",\"admins\":[\"krpratic@microsoft.com\"],\"viewers\":[],\"creator\":\"krpratic@microsoft.com\",\"status\":\"Active\",\"createdTime\":\"2020-09-21T20:36:30Z\",\"isAdmin\":true,\"actionLinkTemplate\":\"\",\"dataSourceParameter\":{\"connectionString\":\"connectionstring\",\"query\":\"select\u202F*\u202Ffrom\u202Fadsample2\u202Fwhere\u202FTimestamp\u202F=\u202F@StartTime\"}}" + headers: + apim-request-id: + - ee151393-97e6-40c5-8c07-42fe1b513aa8 + content-length: + - '1496' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 20:36:31 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '193' + x-request-id: + - ee151393-97e6-40c5-8c07-42fe1b513aa8 + status: + code: 200 + message: OK +- request: + body: '{"name": "testupdated266823b5", "description": "My test metric anomaly + detection configuration", "metricId": "81a4fd73-6404-41e3-822e-98e96a8e6ecf", + "wholeMetricConfiguration": {"conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 50.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 50, "minRatio": 50.0}}, "hardThresholdCondition": {"lowerBound": + 0.0, "upperBound": 100.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 5.0}}, "changeThresholdCondition": {"changePercentage": + 50.0, "shiftPoint": 30, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 2, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Sao Paulo"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "Shenzhen", "category": "Jewelry"}}, "smartDetectionCondition": + {"sensitivity": 63.0, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 1, "minRatio": 100.0}}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1182' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations + response: + body: + string: '' + headers: + apim-request-id: + - c40e8af6-571d-451f-9953-7777499d3959 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 20:36:31 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/17fad699-847d-4904-8b7a-1188b98116f7 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '287' + x-request-id: + - c40e8af6-571d-451f-9953-7777499d3959 + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/17fad699-847d-4904-8b7a-1188b98116f7 + response: + body: + string: '{"anomalyDetectionConfigurationId":"17fad699-847d-4904-8b7a-1188b98116f7","name":"testupdated266823b5","description":"My + test metric anomaly detection configuration","metricId":"81a4fd73-6404-41e3-822e-98e96a8e6ecf","wholeMetricConfiguration":{"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":50.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":50,"minRatio":50.0}},"hardThresholdCondition":{"lowerBound":0.0,"upperBound":100.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":5,"minRatio":5.0}},"changeThresholdCondition":{"changePercentage":50.0,"shiftPoint":30,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":2,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Sao + Paulo"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"c4da1002e92a00f9957f41170b864747","dimension":{"city":"Shenzhen","category":"Jewelry"}},"smartDetectionCondition":{"sensitivity":63.0,"anomalyDetectorDirection":"Both","suppressCondition":{"minNumber":1,"minRatio":100.0}}}]}' + headers: + apim-request-id: + - 1e12187d-419a-42ca-8c3e-197bc9d06079 + content-length: + - '1225' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 20:36:32 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '177' + x-request-id: + - 1e12187d-419a-42ca-8c3e-197bc9d06079 + status: + code: 200 + message: OK +- request: + body: '{"name": "updateMe", "description": "updateMe", "wholeMetricConfiguration": + {"conditionOperator": "OR", "smartDetectionCondition": {"sensitivity": 10.0, + "anomalyDetectorDirection": "Up", "suppressCondition": {"minNumber": 5, "minRatio": + 2.0}}, "hardThresholdCondition": {"upperBound": 100.0, "anomalyDetectorDirection": + "Up", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}, "changeThresholdCondition": + {"changePercentage": 20.0, "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": + "Both", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}}, "dimensionGroupOverrideConfigurations": + [{"group": {"dimension": {"city": "Shenzen"}}, "conditionOperator": "AND", "smartDetectionCondition": + {"sensitivity": 10.0, "anomalyDetectorDirection": "Up", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}, "hardThresholdCondition": {"upperBound": + 100.0, "anomalyDetectorDirection": "Up", "suppressCondition": {"minNumber": + 5, "minRatio": 2.0}}, "changeThresholdCondition": {"changePercentage": 20.0, + "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": "Both", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}}], "seriesOverrideConfigurations": [{"series": + {"dimension": {"city": "San Paulo", "category": "Jewelry"}}, "conditionOperator": + "AND", "smartDetectionCondition": {"sensitivity": 10.0, "anomalyDetectorDirection": + "Up", "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}, "hardThresholdCondition": + {"upperBound": 100.0, "anomalyDetectorDirection": "Up", "suppressCondition": + {"minNumber": 5, "minRatio": 2.0}}, "changeThresholdCondition": {"changePercentage": + 20.0, "shiftPoint": 10, "withinRange": true, "anomalyDetectorDirection": "Both", + "suppressCondition": {"minNumber": 5, "minRatio": 2.0}}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '1754' + Content-Type: + - application/merge-patch+json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: PATCH + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/17fad699-847d-4904-8b7a-1188b98116f7 + response: + body: + string: '' + headers: + apim-request-id: + - 7fc2ebc7-2360-4d15-982f-551d3b5b4e96 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 20:36:32 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '210' + x-request-id: + - 7fc2ebc7-2360-4d15-982f-551d3b5b4e96 + status: + code: 204 + message: No Content +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/17fad699-847d-4904-8b7a-1188b98116f7 + response: + body: + string: '{"anomalyDetectionConfigurationId":"17fad699-847d-4904-8b7a-1188b98116f7","name":"updateMe","description":"updateMe","metricId":"81a4fd73-6404-41e3-822e-98e96a8e6ecf","wholeMetricConfiguration":{"conditionOperator":"OR","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"dimension":{"city":"Shenzen"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesId":"b2a22354fe4ca2b7b1b7db3254563f17","dimension":{"city":"San + Paulo","category":"Jewelry"}},"conditionOperator":"AND","smartDetectionCondition":{"sensitivity":10.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"hardThresholdCondition":{"upperBound":100.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minNumber":5,"minRatio":2.0}},"changeThresholdCondition":{"changePercentage":20.0,"shiftPoint":10,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minNumber":5,"minRatio":2.0}}}]}' + headers: + apim-request-id: + - f362a499-02dd-4f32-ab63-1acf910aaf9f + content-length: + - '1799' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 20:36:32 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '81' + x-request-id: + - f362a499-02dd-4f32-ab63-1acf910aaf9f + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '0' + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.7.3 (Windows-10-10.0.19041-SP0) + method: DELETE + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/dataFeeds/24d983fe-66b0-47d2-bdf0-0240b24eb87b + response: + body: + string: '' + headers: + apim-request-id: + - 5439104a-2590-451e-a888-0a1769418f83 + content-length: + - '0' + date: + - Mon, 21 Sep 2020 20:36:33 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '459' + x-request-id: + - 5439104a-2590-451e-a888-0a1769418f83 + status: + code: 204 + message: No Content +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_add_anomaly_feedback.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_add_anomaly_feedback.yaml new file mode 100644 index 000000000000..5080c5273f24 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_add_anomaly_feedback.yaml @@ -0,0 +1,44 @@ +interactions: +- request: + body: '{"feedbackType": "Anomaly", "metricId": "metric_id", "dimensionFilter": + {"dimension": {"dimension_name": "Common Lime"}}, "startTime": "2020-08-05T00:00:00.000Z", + "endTime": "2020-08-07T00:00:00.000Z", "value": {"anomalyValue": "NotAnomaly"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '259' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric + response: + body: + string: '' + headers: + apim-request-id: + - f9af4b73-266e-4a66-953e-649942dae2de + content-length: + - '0' + date: + - Tue, 22 Sep 2020 20:37:33 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric/82c6ee69-0d99-45a5-9674-67833b126da7 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '291' + x-request-id: + - f9af4b73-266e-4a66-953e-649942dae2de + status: + code: 201 + message: Created +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_add_change_point_feedback.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_add_change_point_feedback.yaml new file mode 100644 index 000000000000..0317ffbf4d2c --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_add_change_point_feedback.yaml @@ -0,0 +1,44 @@ +interactions: +- request: + body: '{"feedbackType": "ChangePoint", "metricId": "metric_id", "dimensionFilter": + {"dimension": {"dimension_name": "Common Lime"}}, "startTime": "2020-08-05T00:00:00.000Z", + "endTime": "2020-08-07T00:00:00.000Z", "value": {"changePointValue": "NotChangePoint"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '271' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric + response: + body: + string: '' + headers: + apim-request-id: + - d0b0eb17-27f2-4bc1-8a3b-246470454703 + content-length: + - '0' + date: + - Tue, 22 Sep 2020 20:29:34 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric/1c995c7b-9d30-4544-bccb-fcd906742c1b + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '427' + x-request-id: + - d0b0eb17-27f2-4bc1-8a3b-246470454703 + status: + code: 201 + message: Created +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_add_comment_feedback.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_add_comment_feedback.yaml new file mode 100644 index 000000000000..9e3ef93ed20a --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_add_comment_feedback.yaml @@ -0,0 +1,44 @@ +interactions: +- request: + body: '{"feedbackType": "Comment", "metricId": "metric_id", "dimensionFilter": + {"dimension": {"dimension_name": "Common Lime"}}, "startTime": "2020-08-05T00:00:00.000Z", + "endTime": "2020-08-07T00:00:00.000Z", "value": {"commentValue": "comment"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '256' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric + response: + body: + string: '' + headers: + apim-request-id: + - 0c29a86f-68f3-40ac-92dc-5e276164a3d8 + content-length: + - '0' + date: + - Tue, 22 Sep 2020 20:30:15 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric/ea551f0b-5f36-4a52-b8f4-d2059c91fd59 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '239' + x-request-id: + - 0c29a86f-68f3-40ac-92dc-5e276164a3d8 + status: + code: 201 + message: Created +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_add_period_feedback.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_add_period_feedback.yaml new file mode 100644 index 000000000000..14549ccca14c --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_add_period_feedback.yaml @@ -0,0 +1,44 @@ +interactions: +- request: + body: '{"feedbackType": "Comment", "metricId": "metric_id", "dimensionFilter": + {"dimension": {"dimension_name": "Common Lime"}}, "value": {"periodType": "AssignValue", + "periodValue": 2}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '196' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric + response: + body: + string: '' + headers: + apim-request-id: + - 741abfc4-0329-4b18-8d8e-86f115ab09d5 + content-length: + - '0' + date: + - Tue, 22 Sep 2020 20:31:30 GMT + location: + - https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric/a5bc8268-cc9f-4cdb-82b4-a75acc465774 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '356' + x-request-id: + - 741abfc4-0329-4b18-8d8e-86f115ab09d5 + status: + code: 201 + message: Created +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_get_feedback.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_get_feedback.yaml new file mode 100644 index 000000000000..9a5b149fc34c --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_get_feedback.yaml @@ -0,0 +1,42 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric/feedback_id + response: + body: + string: '{"feedbackId":"feedback_id","createdTime":"2020-09-22T00:24:18.629Z","userPrincipal":"xiangyan@microsoft.com","metricId":"metric_id","dimensionFilter":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Amphibian"}},"feedbackType":"Anomaly","startTime":"2020-08-30T00:00:00Z","endTime":"2020-08-30T00:00:00Z","value":{"anomalyValue":"NotAnomaly"},"anomalyDetectionConfigurationId":"2fe9e687-4c9e-4e1b-8ec8-6541553db969","anomalyDetectionConfigurationSnapshot":{"anomalyDetectionConfigurationId":"2fe9e687-4c9e-4e1b-8ec8-6541553db969","name":"new + Name","description":"new description","metricId":"metric_id","wholeMetricConfiguration":{"conditionOperator":"OR","hardThresholdCondition":{"upperBound":500.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minAlertNumber":5,"minAlertRatio":5.0}},"changeThresholdCondition":{"changePercentage":44.0,"shiftPoint":2,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minAlertNumber":4,"minAlertRatio":4.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"seriesGroupConfigurationId":"51242ee0b8c72df4e537ffdfe0e8af69","tagSet":{"dimension_name":"Common + Lime"}},"conditionOperator":"AND","hardThresholdCondition":{"upperBound":400.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minAlertNumber":2,"minAlertRatio":2.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesConfigurationId":"54bdef99c03c71c764fd3ea671cd1260","tagSet":{"dimension_name":"Common + Beech","Dim2":"Ant"}},"conditionOperator":"OR","changeThresholdCondition":{"changePercentage":33.0,"shiftPoint":1,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minAlertNumber":2,"minAlertRatio":2.0}}}],"favoriteSeries":[],"disabledSeries":[]}}' + headers: + apim-request-id: + - f35069de-3c42-4fa0-90fa-c2fe0ca13a20 + content-length: + - '1765' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 17:28:43 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '48' + x-request-id: + - f35069de-3c42-4fa0-90fa-c2fe0ca13a20 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_get_incident_root_cause.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_get_incident_root_cause.yaml new file mode 100644 index 000000000000..5664f46141ea --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_get_incident_root_cause.yaml @@ -0,0 +1,38 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/c0f2539f-b804-4ab9-a70f-0da0c89c76d8/incidents/test/rootCause + response: + body: + string: '{"code":"Not Found","message":"Not found this Incident. TraceId: a9ebff49-93be-4cfb-b662-8df700e11cdd"}' + headers: + apim-request-id: + - 07e4927a-ec60-4b7a-afba-710c9e53558f + content-length: + - '103' + content-type: + - application/json; charset=utf-8 + date: + - Thu, 17 Sep 2020 20:23:13 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '214' + x-request-id: + - 07e4927a-ec60-4b7a-afba-710c9e53558f + status: + code: 404 + message: Not Found +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_get_metrics_series_data.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_get_metrics_series_data.yaml new file mode 100644 index 000000000000..ee272435a0c2 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_get_metrics_series_data.yaml @@ -0,0 +1,44 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z", + "series": [{"city": "Mumbai", "category": "Shoes Handbags & Sunglasses"}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '155' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/802153a9-1671-4a6f-901e-66bbf09384d9/data/query + response: + body: + string: '{"value":[{"id":{"metricId":"802153a9-1671-4a6f-901e-66bbf09384d9","dimension":{"city":"Mumbai","category":"Shoes + Handbags & Sunglasses"}},"timestampList":["2020-08-12T00:00:00Z","2020-08-13T00:00:00Z","2020-08-14T00:00:00Z","2020-08-15T00:00:00Z","2020-08-16T00:00:00Z","2020-08-17T00:00:00Z","2020-08-18T00:00:00Z","2020-08-19T00:00:00Z","2020-08-20T00:00:00Z","2020-08-21T00:00:00Z","2020-08-22T00:00:00Z","2020-08-23T00:00:00Z","2020-08-24T00:00:00Z","2020-08-25T00:00:00Z","2020-08-26T00:00:00Z","2020-08-27T00:00:00Z","2020-08-28T00:00:00Z","2020-08-29T00:00:00Z","2020-08-30T00:00:00Z","2020-08-31T00:00:00Z","2020-09-01T00:00:00Z","2020-09-02T00:00:00Z","2020-09-03T00:00:00Z","2020-09-04T00:00:00Z","2020-09-05T00:00:00Z","2020-09-06T00:00:00Z","2020-09-07T00:00:00Z","2020-09-08T00:00:00Z"],"valueList":[3791980.2,3800583.2,3220767.2,2275339.2,2717852.2,4093258.4000000004,4040975.8000000003,3813171.8000000003,3727122.8000000003,3090036.6,2332647.4,2943037.6,4178019.2,4061467.6,4136178.8000000003,3859673.6,3299744.0,2345039.0,3134822.4000000004,4306395.4,4212766.600000001,4049135.0,4094219.6,3283001.0,2407888.2,3041747.0,4255081.600000001,4189254.0]}]}' + headers: + apim-request-id: + - b7756e0c-aa28-45c4-869e-c6b26a024528 + content-length: + - '1167' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2020 16:55:07 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '289' + x-request-id: + - b7756e0c-aa28-45c4-869e-c6b26a024528 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_get_series.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_get_series.yaml new file mode 100644 index 000000000000..5a0f709765d9 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_get_series.yaml @@ -0,0 +1,43 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z", + "series": [{"dimension": {"city": "city"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '125' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/342346a5-4e6d-4cb7-9a0a-41901bdedb52/series/query + response: + body: + string: '{"value":[{"series":{"dimension":{"city":"city"}},"timestampList":[],"valueList":[],"isAnomalyList":[],"periodList":[],"expectedValueList":[],"lowerBoundaryList":[],"upperBoundaryList":[]}]}' + headers: + apim-request-id: + - 49346823-9143-46e1-80c8-a464e79b0fcc + content-length: + - '190' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 15 Sep 2020 16:55:08 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '247' + x-request-id: + - 49346823-9143-46e1-80c8-a464e79b0fcc + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_alerts_for_alert_configuration.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_alerts_for_alert_configuration.yaml new file mode 100644 index 000000000000..ad5f8e6f9a69 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_alerts_for_alert_configuration.yaml @@ -0,0 +1,43 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z", + "timeMode": "AnomalyTime"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '107' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/anomaly_alert_configuration_id/alerts/query + response: + body: + string: '{"value":[{"alertId":"alert_id","timestamp":"2020-09-08T00:00:00Z","createdTime":"2020-09-12T01:15:16.406Z","modifiedTime":"2020-09-14T20:42:57.048Z"},{"alertId":"17465dcc000","timestamp":"2020-09-07T00:00:00Z","createdTime":"2020-09-12T01:14:17.184Z","modifiedTime":"2020-09-12T01:28:54.26Z"},{"alertId":"17460b66400","timestamp":"2020-09-06T00:00:00Z","createdTime":"2020-09-12T01:14:16.927Z","modifiedTime":"2020-09-12T01:24:16.887Z"}],"@nextLink":null}' + headers: + apim-request-id: + - 20612c77-1020-4b0d-865e-1d93796ae9a3 + content-length: + - '459' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 21:48:32 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '98' + x-request-id: + - 20612c77-1020-4b0d-865e-1d93796ae9a3 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_anomalies_for_alert.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_anomalies_for_alert.yaml new file mode 100644 index 000000000000..073229326247 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_anomalies_for_alert.yaml @@ -0,0 +1,41 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/anomaly_alert_configuration_id/alerts/alert_id/anomalies + response: + body: + string: '{"value":[{"metricId":"metric_id","anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","timestamp":"2020-09-08T00:00:00Z","createdTime":"2020-09-12T01:15:16.46Z","modifiedTime":"2020-09-12T01:15:16.46Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low","anomalyStatus":"Active"}},{"metricId":"metric_id","anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","timestamp":"2020-09-08T00:00:00Z","createdTime":"2020-09-12T01:15:16.46Z","modifiedTime":"2020-09-12T01:15:16.46Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low","anomalyStatus":"Active"}},{"metricId":"metric_id","anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","timestamp":"2020-09-08T00:00:00Z","createdTime":"2020-09-12T01:15:16.46Z","modifiedTime":"2020-09-12T01:15:16.46Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Medium","anomalyStatus":"Active"}}],"@nextLink":null}' + headers: + apim-request-id: + - 32fa0446-d368-4c52-ad2d-a1cd9c90b185 + content-length: + - '1110' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 21:48:24 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '67' + x-request-id: + - 32fa0446-d368-4c52-ad2d-a1cd9c90b185 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_anomalies_for_detection_configuration.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_anomalies_for_detection_configuration.yaml new file mode 100644 index 000000000000..1b973d77992a --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_anomalies_for_detection_configuration.yaml @@ -0,0 +1,1360 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/anomalies/query + response: + body: + string: '{"value":[{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Buzzard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Yew","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Caterpillar"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Blackbird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bobolink"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-08T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Amphibian"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bat"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Amphibian"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Buzzard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Black widow spider"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Blackbird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Amphibian"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bald + eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bobolink"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beetle"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bat"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-07T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Amphibian"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Camel"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Amphibian"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Animals + by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Buzzard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Black widow spider"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bobolink"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Canidae"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Beaked + whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-06T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Black widow spider"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Capybara"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-05T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Butterfly"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Boa"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-04T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Boa"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Black + panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bobolink"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-03T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Butterfly"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Arabian + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Antelope"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Black + panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Box jellyfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-02T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Canid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Arabian + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Booby"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Cat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-09-01T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Canid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"American + robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"American + robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"African buffalo"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"African + buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-31T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Aspen","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-30T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bali + cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Boa"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-29T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Butterfly"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Box jellyfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-28T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"African + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Caterpillar"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-27T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Beaked + whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-26T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bali + cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ass + (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Aspen","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Amphibian"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Animals + by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Box jellyfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-25T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Animals + by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bali + cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ass + (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Aspen","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Animals + by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-24T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Animals + by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-23T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"African + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-22T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ass + (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Black + panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-21T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ass + (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-20T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Animals + by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-19T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-18T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Cardinal"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Amphibian"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"American + robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Aspen","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bali + cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Beaked + whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-17T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/anomalies/query?$top=1000&$skip=1000"}' + headers: + apim-request-id: + - 65a814a8-a592-43ea-8359-043628c5211f + content-length: + - '129955' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:53:55 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '246' + x-request-id: + - 65a814a8-a592-43ea-8359-043628c5211f + status: + code: 200 + message: OK +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/anomalies/query?$top=1000&$skip=1000 + response: + body: + string: '{"value":[{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bali + cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Animals + by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Ass + (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bat"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Animals + by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bali + cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Alpaca"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Albatross"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Amphibian"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Beech","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African elephant"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Aardvark"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Alpaca"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Ape"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bali cattle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Black + panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ape"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bovid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Amphibian"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-16T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Ass + (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bee"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Baboon"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Badger"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bat"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Animals + by number of neurons"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Alpaca"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bear"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bee"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Beaked + whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Basilisk"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"African + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bald + eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Albatross"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"African + elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Basilisk"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Antelope"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bird"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alpaca"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Alpaca"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Black + panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Antlion"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Asp"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + leopard"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Alpaca"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Ape"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"African buffalo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Black + panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Amphibian"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Black panther"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"American buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arabian + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ape"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Animals by number of neurons"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"American + robin"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bandicoot"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Ant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Asp"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Badger"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beaver"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bald eagle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Anaconda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Barracuda"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Animals by size"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Amphibian"},"property":{"anomalySeverity":"High"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Common + Alder","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaked whale"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-15T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Arctic + Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Almond","Dim2":"Basilisk"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bee"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Baboon"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"African + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bedbug"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Birch","Dim2":"Anglerfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Bird"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alligator"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Aspen","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arabian leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Wolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"African + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cherry","Dim2":"Barnacle"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Ass (donkey)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Aardwolf"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aphid"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Walnut","Dim2":"Albatross"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bass"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bison"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Armadillo"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Badger"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bat"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Arabian + leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Blackthorn","Dim2":"Badger"},"property":{"anomalySeverity":"Medium"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Lime","Dim2":"Blue jay"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"},"property":{"anomalySeverity":"Low"}},{"timestamp":"2020-08-14T00:00:00Z","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Fox"},"property":{"anomalySeverity":"Low"}}],"@nextLink":null}' + headers: + apim-request-id: + - 6a68338e-9438-4c78-9188-8acbab67eae6 + content-length: + - '59539' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:01 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '5259' + x-request-id: + - 6a68338e-9438-4c78-9188-8acbab67eae6 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_dimension_values_for_detection_configuration.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_dimension_values_for_detection_configuration.yaml new file mode 100644 index 000000000000..1800ff2f16b0 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_dimension_values_for_detection_configuration.yaml @@ -0,0 +1,48 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z", + "dimensionName": "dimension_name"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '105' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/anomalies/dimension/query + response: + body: + string: '{"value":["Common Lime","Cherry Laurel","Cabbage Palm","Blackthorn","Blue + Atlas Cedar","Cider gum","Common Walnut","Almond","Chinese red-barked birch","Bastard + Service Tree","Black Birch (River Birch)","Caucasian Fir","Common Beech","Cherry","Caucasian + Lime","Birch","Algerian Fir","Black Poplar","Cockspur Thorn","Common Alder","Common + Ash","Austrian Pine","Common Hazel","Box elder","Common Juniper","Aspen","Common + Yew"],"@nextLink":null}' + headers: + apim-request-id: + - b37f48a5-4bf7-48e3-9647-4d7f903e4062 + content-length: + - '441' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:03 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '204' + x-request-id: + - b37f48a5-4bf7-48e3-9647-4d7f903e4062 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_feedbacks.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_feedbacks.yaml new file mode 100644 index 000000000000..1cc02270c7a3 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_feedbacks.yaml @@ -0,0 +1,46 @@ +interactions: +- request: + body: '{"metricId": "metric_id"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '52' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/feedback/metric/query + response: + body: + string: '{"value":[{"feedbackId":"feedback_id","createdTime":"2020-09-22T00:24:18.629Z","userPrincipal":"xiangyan@microsoft.com","metricId":"metric_id","dimensionFilter":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Amphibian"}},"feedbackType":"Anomaly","startTime":"2020-08-30T00:00:00Z","endTime":"2020-08-30T00:00:00Z","value":{"anomalyValue":"NotAnomaly"},"anomalyDetectionConfigurationId":"2fe9e687-4c9e-4e1b-8ec8-6541553db969","anomalyDetectionConfigurationSnapshot":{"anomalyDetectionConfigurationId":"2fe9e687-4c9e-4e1b-8ec8-6541553db969","name":"new + Name","description":"new description","metricId":"metric_id","wholeMetricConfiguration":{"conditionOperator":"OR","hardThresholdCondition":{"upperBound":500.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minAlertNumber":5,"minAlertRatio":5.0}},"changeThresholdCondition":{"changePercentage":44.0,"shiftPoint":2,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minAlertNumber":4,"minAlertRatio":4.0}}},"dimensionGroupOverrideConfigurations":[{"group":{"seriesGroupConfigurationId":"51242ee0b8c72df4e537ffdfe0e8af69","tagSet":{"dimension_name":"Common + Lime"}},"conditionOperator":"AND","hardThresholdCondition":{"upperBound":400.0,"anomalyDetectorDirection":"Up","suppressCondition":{"minAlertNumber":2,"minAlertRatio":2.0}}}],"seriesOverrideConfigurations":[{"series":{"seriesConfigurationId":"54bdef99c03c71c764fd3ea671cd1260","tagSet":{"dimension_name":"Common + Beech","Dim2":"Ant"}},"conditionOperator":"OR","changeThresholdCondition":{"changePercentage":33.0,"shiftPoint":1,"anomalyDetectorDirection":"Both","withinRange":true,"suppressCondition":{"minAlertNumber":2,"minAlertRatio":2.0}}}],"favoriteSeries":[],"disabledSeries":[]}}],"@nextLink":null}' + headers: + apim-request-id: + - fe27fe9b-33ba-40c1-992f-055d1d41008c + content-length: + - '1794' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 00:35:51 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '224' + x-request-id: + - fe27fe9b-33ba-40c1-992f-055d1d41008c + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_incident_root_cause.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_incident_root_cause.yaml new file mode 100644 index 000000000000..f9f7b809746e --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_incident_root_cause.yaml @@ -0,0 +1,38 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/incidents/incident_id/rootCause + response: + body: + string: '{"value":[]}' + headers: + apim-request-id: + - 88646f24-89dc-41fb-a333-401aa0134040 + content-length: + - '12' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:04 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '208' + x-request-id: + - 88646f24-89dc-41fb-a333-401aa0134040 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_incidents_for_alert.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_incidents_for_alert.yaml new file mode 100644 index 000000000000..d30c3cf8f51d --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_incidents_for_alert.yaml @@ -0,0 +1,41 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/alert/anomaly/configurations/anomaly_alert_configuration_id/alerts/alert_id/incidents + response: + body: + string: '{"value":[{"metricId":"metric_id","anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","incidentId":"a6a239ae68312b70cf66f778a7477d41-alert_id","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"metricId":"metric_id","anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","incidentId":"incident_id","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"metricId":"metric_id","anomalyDetectionConfigurationId":"anomaly_detection_configuration_id","incidentId":"faa12efccfc87ba03d8d757bc2f0b0c4-alert_id","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}}],"@nextLink":null}' + headers: + apim-request-id: + - adc57129-32b5-4b80-a67a-b8374fcf1d18 + content-length: + - '1179' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 21:54:39 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '408' + x-request-id: + - adc57129-32b5-4b80-a67a-b8374fcf1d18 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_incidents_for_detection_configuration.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_incidents_for_detection_configuration.yaml new file mode 100644 index 000000000000..8d3c4f4638ce --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_incidents_for_detection_configuration.yaml @@ -0,0 +1,1087 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/incidents/query + response: + body: + string: '{"value":[{"incidentId":"incident_id","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"28b93e5bb5ed5b9fe7e802650b689444-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"007f2c0b9e584865226cebf5418e42b5-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"a6a239ae68312b70cf66f778a7477d41-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"faa12efccfc87ba03d8d757bc2f0b0c4-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"641584f1651248229c7ac1622054acef-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Beech","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"13b8142e4f38d38c057f687c2a6c0ff7-1746b031c00","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"89da81b38d4a9b8377b36533b396da8f-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4282006808e1493c639fb39e33b3381d-1746b031c00","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f4682287e688d43ab4307ab7d5b37738-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c87c20ce60127f65a5b5370fbe17dda9-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ec190978fe5340f3a4a3ccc36667db92-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"45f835f6379c57465b54e25de5aba8b4-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Buzzard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d197a7ce67ded42a1c3676a2a04137-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e897e7d78fd3f576c33ebd838f1aa568-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bobolink"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ceb41534df0afd897a53c8d5aeca58d6-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e5451767ef6f6806dc05a566802fe906-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8a576a78b827cc2af797f23dd08b8923-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"40f981ba9ac24ef15a8d5e54b4c95432-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c90131fb355ca64902ab7e34424faba-1746b031c00","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d4ee3adc7cb24e4d078627c2a42456b9-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3aa3b1be7110e514bd26d5be619eeb2a-1746b031c00","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fca86f4a0771df91e8256f23db59b2f1-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c1a59aab5541bebb7282cb108d29f125-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5a89c6ddb79ee3ee2737766af7b622d8-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b27b76e58a329c1467139380fd5ad23c-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Caterpillar"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"956102fc96a8be4de9467d69e2ae12e9-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0dd7026311b2b75e00d6921983458852-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4c16561b2c7996954586cb6788ebe4ea-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"718a117259a74f5fde964b9d6d9b8e83-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b52c1252c75f402ab547294538e2dbd7-1746b031c00","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9ebaf278493cd8716b31d2f9a7f5a1d5-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"67d4df1573fef9406202d449d022228e-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5c64a49e41184760a3a42f6315469ac1-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f08119c00663d14023694eccc7726b1f-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eae4a784a896ef62f896859e9c16fb88-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d08a5c225d011bba0a3a42e8f16c60-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1a0626ddd907a314f4ad65c8cd2b09a0-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a587ba21ed0913f94f43b63fcfe0df7-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"97796fa71d33ea33129206a475cc5d5c-1746b031c00","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"218e7f9931905479cd478a9aa1410890-1746b031c00","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e90fb27d0bd794c93385eabb8a4590c8-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1444d57b7012704883e92369490109c4-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9ac4c95d5be44546d4e950980c4fb805-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5ec5f17f0b870227087a0607e0a62299-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c16dd563031ddb3b905cbb895e4e93e4-1746b031c00","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Blackbird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2cfb4cec675c68a24b32a93aeb8f83db-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfb5fef5de71fc5669189ec18e80c633-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5e6ec9e42c5a174b6c66de5b3942e6df-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Yew","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7fbc1fd179536e10c74db8fb4f2d7109-1746b031c00","startTime":"2020-09-08T00:00:00Z","lastTime":"2020-09-08T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c2056afdccbbb6c971a0e87e595fd8c6-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Amphibian"}},"property":{"maxSeverity":"High","incidentStatus":"Active"}},{"incidentId":"2f3263eff7ebec71575d55701cf91f87-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Amphibian"}},"property":{"maxSeverity":"High","incidentStatus":"Active"}},{"incidentId":"fa02a59a9da76f3681e37b9cf1ba3bc1-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Amphibian"}},"property":{"maxSeverity":"High","incidentStatus":"Active"}},{"incidentId":"0e2f472c7dbd692fba8923c2f7f09c90-17465dcc000","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Amphibian"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"48b5553b21d63aaf2eda299da258e7a9-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"ed1945350561ce57fd45860c49e7605d-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beetle"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"2e14a130f967b3764d434f470ed90c79-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bat"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"f0ec54044b14f05722c1dd6e9e2ee770-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bat"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"5800a7718cdd105d3df4b169401db1f7-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cea2781e2ebb17c20b3614bc901e7234-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0d1d1d05595eaf8b1eb161f48dba32bc-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a37d0c3ae699587692341d47831cae5d-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d5c4be357ab910ff92b0a810e36b3c1-17465dcc000","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"African + leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"49db17e1cc7e839a3fcd995b8ee992e5-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5e693c0f522a11fb7938803e3386d43e-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0b46a044b6d592a45e2508d584bf16a3-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8574a6fb0f5124381263704c82ab735f-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"86e85ca32b3ff7270a89c46b5323c208-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a57a441ee18b1a781e2344706190b8d8-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9727ea3afb9cdbd7554b49377127f822-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1be634e8680f7f41f3070963a21a8ce2-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c3ea31010e92e5d097ace4053ff7a939-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eaf74390f3baf2f348e9d782d171c461-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2f2e19710ef2d44fc1cd59ff9796c753-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e04f109adbf4ca9b12da1583d542b7b2-17465dcc000","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"799056242ef6d4822523bc6bfa62f682-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"589e1ce7435e10c4fd25dcf44e6008cb-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9664d1509d5c9c6cdab967a48ed43a7c-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"67aab648e26fdf49bc77a78e764922ec-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d5fe255778a3022c66f4ed65ae45446d-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00917e01b8bc5145a2ae207a8029fd11-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e465d7ce2eab5e14ce38a39e6a5c0a78-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bald + eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0ae1648cffdbac7ef5ff8a98a78e60c4-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"497d898821166983b0566e842ffb99ed-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ac0a0938a8a3ff6c0a35add8b693ccca-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"813c0673a0ecc31b731a8f4a25cdedc0-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"85ba18587dd0cf7fa6b685cfc00731f3-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"df208b3f67f60ba6d0f5b0f803f4bb1f-17465dcc000","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0f828a31e8b181794221615367e72527-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Arctic + Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c9ec37ecb6f7529194c90763c40b7610-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0cc8d82361998d912a49eeaa5a568200-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e4ab22586b41c4c80081129424417089-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c60bb8d0b5d45bba89ecf2745fd1787d-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"113446a1c673896502f0526dea10525c-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9e1d9ffc4c247b2bb4342e458387b481-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"029caf6cc2201f710f5f8e7192082a76-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"586a065eec07588b1c993701f1eb2c1f-17465dcc000","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Black widow spider"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"94b1070d82d2a24f68ee459fb4dd031f-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3c37b8155456ed55c9a06f2d4acfdcfd-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"da6bdb54a97d59967cdb86a188a80578-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"77a5c068834bf068189b0df48219028d-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8716aad622b2fd5754ed2a7c98a57731-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b8ec7c3522535439f6cb78e914bfa1ce-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f55e141d7f77eefc2395e268af311afb-17465dcc000","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d56df63ed4f3851ad3b285815e29fac-17465dcc000","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f11914e0219cf41f777de203faff2063-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6509b04581eaa307e69f9a01a4023998-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"73561fa50ad6459fe0b8f9bf74e30a81-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b296e03e2dccc33ae4976c9f27b89857-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7573aca2c2b1514604372e386ea4d932-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b051b82f932c4273ed698738b2df6cac-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"629c77943696242a4e5f75f13c9c6e95-17465dcc000","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"63630c3417929aa30984db5598805523-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"384e438bd8d5b1f60ff22d4e729cd9b8-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1290959144c3ded4ff2a284ba94c41c9-17465dcc000","startTime":"2020-09-07T00:00:00Z","lastTime":"2020-09-07T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e765a24fd08a5208c8307c292241552b-17460b66400","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"008e03333f13ef526fab59984d8636ea-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a79eb0471dab655862a6570f9642081-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4ac42cf930d0d72fe3bda863d8f68ade-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b5227389258ac73b5f07a4425ca1da43-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ceb41534df0afd897a53c8d5aeca58d6-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0311e8637b16ec22f15ee700e3d35459-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cc40511a7cb745ff811151ca54ad5ba8-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f1589049fa2c7bb81631737442da2794-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"40f981ba9ac24ef15a8d5e54b4c95432-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2cba0250b334090391b23a888cf67792-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed6b809d9445e7c1b8dafe76e85d536b-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Canidae"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6b5c2510e20a73926cb189d84c549d1c-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ae0d08377b9ff3a7e48d64d4e2b83fea-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0557b07b8eb21c8a6e6742e5ff6d4808-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Camel"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"20286302ad28a0989b0c291090ce0508-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f1eafda089ba4d5f3fb7584e69955449-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Beaked + whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9a591f19a631a8cfac1b707ea4f761a8-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e525a81b583ed149e12ed726f74b0f74-17460b66400","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"860fa9152017d7b59ac8c1986fb5f481-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4a3ca719eaee5f889f65bd7d25a8b151-17460b66400","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"08a28a4db963e7f4a878da52cd18dc17-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f08119c00663d14023694eccc7726b1f-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a4fc06dccd0b0de8a577e357ceee2a3d-17460b66400","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa281ae71357208f14ccb83392ed5d4c-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1ccde4825f1a3e82dd8dccc6e09cfaa4-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1444d57b7012704883e92369490109c4-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1ed17a92fa6951c3d7bd3388c501d61f-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"17f3f388c234cfd7e535ab51ac4a1b4f-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Animals + by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"175ff739f5f490ea24884b6d1e8a9d0a-17460b66400","startTime":"2020-09-06T00:00:00Z","lastTime":"2020-09-06T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8126f81c5c24ca5dee3ec1fb69ac256a-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3d4126ed79bf9645d8fdc26dcbe988b3-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f4682287e688d43ab4307ab7d5b37738-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b6240cb868a60d25a0eccc0102be31b1-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cb006f689378e1dfc4d73d81442bf5e0-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f167210571d3da66402f47547c9b8b1e-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Capybara"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e510c539547f7010234097bf5695be08-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a6dcf69de6fcc8f83bfee4ff158d5699-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1bb9530e7d6e50a21229bbf8ec399b6d-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4d2faf4248f7a8a313b0c481d803e542-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"06624c901b2635ed1f4ce44fb5f2e4cb-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0bf008e7d532ebe7455360188fb64dc7-1745b900800","startTime":"2020-09-05T00:00:00Z","lastTime":"2020-09-05T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"28b93e5bb5ed5b9fe7e802650b689444-1745669ac00","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"7b3ff7d996e69abb8152398f72e2bde3-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Beech","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"394981a084bb6236be3c93b5e169862a-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"34e213f3dabd5b618de8864f5fc191b9-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d3d6770e7254b139e35040b66506b81-1745669ac00","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"760b8242d0edf0c881453b714fa73b09-1745669ac00","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Boa"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d3a4b8e4810661e5ab1be9eb594b8539-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"92208ec1a39431322e6cc6aa8563017f-1745669ac00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"883d6deade06d2e7196b4f4be3688e19-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cecc0a8f12ab522e9b7b0c283df72b54-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00917e01b8bc5145a2ae207a8029fd11-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ec694c925571ab2b4c3ce88422cb3665-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cc40511a7cb745ff811151ca54ad5ba8-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"497d898821166983b0566e842ffb99ed-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1e18994824d880a47de4f87cde3018c4-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"45cfc3017d05be4b1c683e693ee55796-1745669ac00","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"32a5ec4fbec26a387421648d3b3cfd64-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81bc0798412f4dddab87bc1f842bdbbc-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8cc3eb717f3884f7a00bc6d93b04e973-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"646106ca10935841887a3568a2add46d-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"db4f303bfead652ac2a0c00960503fda-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f0dce8270a17c3c1c0d5abd349564e3a-1745669ac00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9ef6144ffc4ac92548edb0da3e1439bc-1745669ac00","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b52c1252c75f402ab547294538e2dbd7-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e1741ac8bcc5a8f5b17b1086b4a439cb-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eca6322c2e167d6b68654e4485f2e0ed-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e33eed0b14062992cedbe7a624f10301-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5c64a49e41184760a3a42f6315469ac1-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"73561fa50ad6459fe0b8f9bf74e30a81-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0899b6d37863f294ffaab15dc887f720-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Butterfly"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"267f0c5ad4c1b049d6fd59a784d6c01d-1745669ac00","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"403429859e947f42db3d660b1fe00182-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6b5c2510e20a73926cb189d84c549d1c-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"61ab275a61cc0616372112e406ffaca2-1745669ac00","startTime":"2020-09-04T00:00:00Z","lastTime":"2020-09-04T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e8751dc0ea26c1d692bedc5ff99723cc-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3badd8a82076e4d3c4a4b52e1df933c4-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"445242c0752c481a737a22b37e42e875-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"010e484142c72bf862168db80cda5ec9-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f7a6e4d4b0bb3715751301f1b5c3a406-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1b1320237170cca2d4bfcea44cb9acd5-17451435000","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e897e7d78fd3f576c33ebd838f1aa568-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bobolink"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4ac42cf930d0d72fe3bda863d8f68ade-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b6240cb868a60d25a0eccc0102be31b1-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3aa3b1be7110e514bd26d5be619eeb2a-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e5451767ef6f6806dc05a566802fe906-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d28097d28adb2cc7649bb3ba70a308da-17451435000","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Black + panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"afed89785c1c4e9eeed3f9569a7dabc0-17451435000","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c0c51e491014a195220888938b315d2-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d8ca9275fac073d5f48d2789fae060-17451435000","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bovid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c57f69fbad080df7ff81ec0fbf41c5cd-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d4ee3adc7cb24e4d078627c2a42456b9-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"80a1891b3f02d7c73625ff0c7fe62f06-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c60bb8d0b5d45bba89ecf2745fd1787d-17451435000","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e4ab22586b41c4c80081129424417089-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa4283ffb1575e891b37f4aa2dea43d3-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e525a81b583ed149e12ed726f74b0f74-17451435000","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8cd351bc43b4cbfad89ed491e7dbc5cd-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"abfd13865624e1caa3695f04cc0d6198-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cacb59ef9035f7aa241311a0aa735381-17451435000","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d08a5c225d011bba0a3a42e8f16c60-17451435000","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ca092b76397d0951a189ca60a61b16b9-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6cebbedb6fe1cf345d1120beeee9a133-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"218e7f9931905479cd478a9aa1410890-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3ac2f16d58ce1784eac5256e29bf2f0d-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4c795cbc9707d8bd5f5aab742fd1c5dc-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b56305921e5ffe357256bd11f7bc9b95-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a66e6977f6d4e9b85c20d5a59cd6eb2-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0bf008e7d532ebe7455360188fb64dc7-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d2a5002cd00ebec39e06ad75d7f3f8b9-17451435000","startTime":"2020-09-03T00:00:00Z","lastTime":"2020-09-03T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b0905459e304831ab362b1d7829116e4-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Antelope"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"fe45dce953e20b9246436ad3c76a7c4e-1744c1cf400","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Beech","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6cf9524292757836c2eec2e14fdab244-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4fd4859265b5cc8c1c1b3d4a0e0a509c-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8f08377171fedd730430d81bea52ff6f-1744c1cf400","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Beech","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c00f3386c4a85b4d7dad96982fd1313a-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e33eed0b14062992cedbe7a624f10301-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5ee5293ccf23456c55183069a4b9ccef-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e04f109adbf4ca9b12da1583d542b7b2-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4282006808e1493c639fb39e33b3381d-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ec694c925571ab2b4c3ce88422cb3665-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"883d6deade06d2e7196b4f4be3688e19-1744c1cf400","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"589e1ce7435e10c4fd25dcf44e6008cb-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6455a499b1b00a0389ee27491e92d535-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0899b6d37863f294ffaab15dc887f720-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Butterfly"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"40f981ba9ac24ef15a8d5e54b4c95432-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ea382499f4552fba68eeb6c838926822-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f078dd77fd1aedb38b90d541650c2d56-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2a412de72a9a5ac09d504b685a9a8616-1744c1cf400","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Arabian + leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed9d725f6ef9e4510728130d0fb66505-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Box jellyfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"83257ba37033f7616c05045cb569f028-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8e382c2c1687bde8d7c4c86c78e23ee3-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfb5fef5de71fc5669189ec18e80c633-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1290959144c3ded4ff2a284ba94c41c9-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fca86f4a0771df91e8256f23db59b2f1-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"adf8a463bc86330ac985ace7ef4eaace-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7419a983bb919bd95e884a8a7b595897-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8094385bf71423605b1366eec41ae3d6-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00b89c31c14766a9cff07ec7c4793042-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f906e2ea59ed69704700dd6f8e45b66a-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"673951425995df633118682eaf281b96-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Arctic + Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b752711616dce27e2fa5fedf0549047a-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4738dd46b9347e9bef2dd6b58235a1d6-1744c1cf400","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c792d0c369cc488599f75372cf06867d-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d3a4b8e4810661e5ab1be9eb594b8539-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"770f054fc609c2f904dcf6fe7ce0427b-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"921fe6c8b8c7b72bab3e867694be3f10-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3291f08abbdb346c42ca6530d4a7255a-1744c1cf400","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eb3114767a3cb51b4877574839fb5e1c-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b296e03e2dccc33ae4976c9f27b89857-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fee9eb2fede2af12f19716e1ff2c1062-1744c1cf400","startTime":"2020-09-02T00:00:00Z","lastTime":"2020-09-02T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ca092b76397d0951a189ca60a61b16b9-17446f69800","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa755a6b60dd4a3d0e8e2148ee0593df-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a79eb0471dab655862a6570f9642081-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f3a5ab87d5809aa1faba46cb958e9db1-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c0c51e491014a195220888938b315d2-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"bb32e5d8b333a6943d6a4cec8c3101de-17446f69800","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fc45360e8e7a7153d3e252b45a3d9044-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9fb08f3aebaa8523c0c2bcd81b876bc5-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4e7c2e8e78265269da5ad8ba515caa3b-17446f69800","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"956102fc96a8be4de9467d69e2ae12e9-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cd3f08c10733898ace1decb53264ba2d-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Cat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a06906c239e3ce2c74f4fd7f3ed006e-17446f69800","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Canid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ee651cd24328a73f7d02fa4bc4c8b60b-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b93f657e9633927a1155cbc6ed4bf5d5-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c11b4934111a0694c0fcf8718cd314ad-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"072bc0f89f39807f4afcdf324fcf4b37-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"718a117259a74f5fde964b9d6d9b8e83-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3305c4b4355ae50f0c55eacb257c1e41-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"757bac39288686f48f4653b544d05ea1-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"553f5e328d6f8fa013d367b456b4b458-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Booby"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"77a5c068834bf068189b0df48219028d-17446f69800","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"11bd7d16bdd2ce64639a3c2296646fad-17446f69800","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"218e7f9931905479cd478a9aa1410890-17446f69800","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f11914e0219cf41f777de203faff2063-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"384e438bd8d5b1f60ff22d4e729cd9b8-17446f69800","startTime":"2020-09-01T00:00:00Z","lastTime":"2020-09-01T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"83dc1243970f2d02251890e686b35683-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"African buffalo"}},"property":{"maxSeverity":"High","incidentStatus":"Active"}},{"incidentId":"623f8a4e5db7f6dceddc5eee5e0580f5-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"10b650ca149ca53aa787cd482718838e-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"22959a995b07fffa7418fa717520b3f2-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"African + buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"641584f1651248229c7ac1622054acef-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Beech","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d7bf4b69239f8e166506d2567eb2f98b-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b0b597eb5866682bb2d241cbf5790f2f-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"African + buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e7a36ca6dca27257e34b70ab9e7dccbe-17441d03c00","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"34e213f3dabd5b618de8864f5fc191b9-17441d03c00","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a6a239ae68312b70cf66f778a7477d41-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c906a2a04e8fe6ee0f4028518927b725-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4282006808e1493c639fb39e33b3381d-17441d03c00","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"010e484142c72bf862168db80cda5ec9-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1444d57b7012704883e92369490109c4-17441d03c00","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0199a7484859345433ce3f09ea1e16e9-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b296e03e2dccc33ae4976c9f27b89857-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0b8a3b066088da639be5b85a2a9f20b5-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d5fe255778a3022c66f4ed65ae45446d-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ac0a0938a8a3ff6c0a35add8b693ccca-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed8c8aab50f3cd57619d7878079998f1-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0237fe843f8d155aa0cfb6d58ee00be7-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4a866958634752a389e2c252b7b41b01-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"45cfc3017d05be4b1c683e693ee55796-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b6c603d31e3c5ad6526cbd081eab1c10-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e4ab22586b41c4c80081129424417089-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"647e0ce96cebdeb7234156bf4daa10a2-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"American + robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d206065246c00ab74315b4298da76e1d-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfe4e3e59319c55d39e42f454e70a3e0-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c57f69fbad080df7ff81ec0fbf41c5cd-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d2a5002cd00ebec39e06ad75d7f3f8b9-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c9ec37ecb6f7529194c90763c40b7610-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1c8d30b1d369afebf8c7ac8693bc3941-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0cc8d82361998d912a49eeaa5a568200-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa4283ffb1575e891b37f4aa2dea43d3-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"74052e4eb1b830f7e9645f9550f263af-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"646106ca10935841887a3568a2add46d-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2702b876a1c7f4b3b0b4f77c8eab1005-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d08a5c225d011bba0a3a42e8f16c60-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f55e141d7f77eefc2395e268af311afb-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"baf21d62280034d070c4b9fd596225c6-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"315b680fa4dc2372fa859d0dd1103162-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"921fe6c8b8c7b72bab3e867694be3f10-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2a21a1f0f4ec1006cc974a4f0ec21d50-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3655be51dfe0bc729e81a6f4c8299635-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ec190978fe5340f3a4a3ccc36667db92-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eb3114767a3cb51b4877574839fb5e1c-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b7dcdcef99b523f2ae9eb58b44bc9d59-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"629c77943696242a4e5f75f13c9c6e95-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0f408c61757d397f1d354b8eb6df1558-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"American + robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"90d8fcd4293881f976bb60e4de7b4472-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"06624c901b2635ed1f4ce44fb5f2e4cb-17441d03c00","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0bf008e7d532ebe7455360188fb64dc7-17441d03c00","startTime":"2020-08-31T00:00:00Z","lastTime":"2020-08-31T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b2ed5f827e7ab8113a530113d32fe3a4-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"e765a24fd08a5208c8307c292241552b-1743ca9e000","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3ac5de822c4163e11dbc5a10bf64011d-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"28b93e5bb5ed5b9fe7e802650b689444-1743ca9e000","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f265881f5532c5ab727abb669279de14-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1592e8cd9b52ed9e03cda73efd648f6b-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Beech","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"85936fe51247075a7e655820014c2896-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"834f6082b8e1bae6132721dc25da6e28-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eca6322c2e167d6b68654e4485f2e0ed-1743ca9e000","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7d36963cf78c2837046a3ae3d12b2aad-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3b8719deb009ebe30db20298c15ae6ba-1743ca9e000","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2e3a6cf5aee279d4f4231c5f0928cbbc-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8ef54f6646f2928049e03eaa745a39cc-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"050933599751744f309c59d0c79f750e-1743ca9e000","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9dc2e60edb58ccbe08a19ded257fdcf6-1743ca9e000","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1f6f3cc13f5225df938d2ab2074dcf5d-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ceb41534df0afd897a53c8d5aeca58d6-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a833e14118e95e40cb4fc649aa5e4127-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"85ba18587dd0cf7fa6b685cfc00731f3-1743ca9e000","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4a6b2318eba8e4259bec52a48fbc77bd-1743ca9e000","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"113446a1c673896502f0526dea10525c-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c1a59aab5541bebb7282cb108d29f125-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f906e2ea59ed69704700dd6f8e45b66a-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c60bb8d0b5d45bba89ecf2745fd1787d-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0670f9cf1b5cfc0e43ab92d5172040ce-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"37bd829dd98c9659b2a80f5f94ce7395-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Aspen","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81912614ff842321c98f3702c4bbffa6-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"abfd13865624e1caa3695f04cc0d6198-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cacb59ef9035f7aa241311a0aa735381-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"47f133eb98f85606cb31cef7cecfdbc8-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"79fea5b88292c559677ec40c8656ed01-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"267f0c5ad4c1b049d6fd59a784d6c01d-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b56305921e5ffe357256bd11f7bc9b95-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"76cfdfd13767fd6041d5a3fd54900e99-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"74d84982464a96ff3eb95a4d5b1a0f39-1743ca9e000","startTime":"2020-08-30T00:00:00Z","lastTime":"2020-08-30T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cc2ff8a836361371b8c6eaad71b194f4-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"7c9131b6e66d512a4681d0ee32a03119-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"3d4126ed79bf9645d8fdc26dcbe988b3-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"743e56b6e3ed836b78218e7a13a34717-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ca092b76397d0951a189ca60a61b16b9-17437838400","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"760b8242d0edf0c881453b714fa73b09-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Boa"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"218e7f9931905479cd478a9aa1410890-17437838400","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ec190978fe5340f3a4a3ccc36667db92-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"67aab648e26fdf49bc77a78e764922ec-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4ac42cf930d0d72fe3bda863d8f68ade-17437838400","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3203dffdb89ddff2c27902a867f95e0a-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3191767e8f21ed6e40e6678cae544533-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ac0a0938a8a3ff6c0a35add8b693ccca-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0998c5438e745065f2b4312721c48b8f-17437838400","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2b045d59e68ef32d963f94bc2ff62c8a-17437838400","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e212f5fa523c3a1f0f06dc3f81620b4d-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1290959144c3ded4ff2a284ba94c41c9-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b6c603d31e3c5ad6526cbd081eab1c10-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8cc3eb717f3884f7a00bc6d93b04e973-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5fc810580695e29c1998f3949e78d2b2-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bali + cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6de49a1e7edb7479f799087586930cc8-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"de29791f0380207c3518aac867974a8c-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"78f30c2c9022b041c64d3ff2a032cd43-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"dcacf66333561a036f6826116a5d009c-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"96062cadf43991e36b9e235ed44a98bb-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c11b4934111a0694c0fcf8718cd314ad-17437838400","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f50d5b7d1c294a5efb380caf2dcc61be-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"718a117259a74f5fde964b9d6d9b8e83-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6ab218766d4a08224f812db22293ef3a-17437838400","startTime":"2020-08-29T00:00:00Z","lastTime":"2020-08-29T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0b8a3b066088da639be5b85a2a9f20b5-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"589e1ce7435e10c4fd25dcf44e6008cb-174325d2800","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a79eb0471dab655862a6570f9642081-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8310ebe938dd2605f1b71235f0e38bfc-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0899b6d37863f294ffaab15dc887f720-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Butterfly"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8e382c2c1687bde8d7c4c86c78e23ee3-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"233e057d416a813f51c9a0b39073831f-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1f6f3cc13f5225df938d2ab2074dcf5d-174325d2800","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed9d725f6ef9e4510728130d0fb66505-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Box jellyfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d385e18843f853af2664557f89fd447-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0bf008e7d532ebe7455360188fb64dc7-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c1a59aab5541bebb7282cb108d29f125-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"891ba16be7731f96dbe2ed07945e3ad6-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f0dce8270a17c3c1c0d5abd349564e3a-174325d2800","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ee651cd24328a73f7d02fa4bc4c8b60b-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"029caf6cc2201f710f5f8e7192082a76-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfd0f6969d39b8687f10f25da91e4ba3-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"474d11128652ea37fb44ddf503ebba27-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2c8aff6ba40bf32e3014935dee92125f-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1ccde4825f1a3e82dd8dccc6e09cfaa4-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"629c77943696242a4e5f75f13c9c6e95-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fee9eb2fede2af12f19716e1ff2c1062-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"267f0c5ad4c1b049d6fd59a784d6c01d-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a66e6977f6d4e9b85c20d5a59cd6eb2-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e510c539547f7010234097bf5695be08-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"956102fc96a8be4de9467d69e2ae12e9-174325d2800","startTime":"2020-08-28T00:00:00Z","lastTime":"2020-08-28T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4e7c2e8e78265269da5ad8ba515caa3b-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c87c20ce60127f65a5b5370fbe17dda9-1742d36cc00","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"801cbfd6d996cfd00949ffa345080ba0-1742d36cc00","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed8c8aab50f3cd57619d7878079998f1-1742d36cc00","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3d39e2070abb949ca864f2dcbb4b5639-1742d36cc00","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1e18994824d880a47de4f87cde3018c4-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f078dd77fd1aedb38b90d541650c2d56-1742d36cc00","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a96bdaaa64823010e2b5d7ee79c65aca-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"92208ec1a39431322e6cc6aa8563017f-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"85ba18587dd0cf7fa6b685cfc00731f3-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8f64cdc61e31c6d42cd9a9a6dfbeb66f-1742d36cc00","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1290959144c3ded4ff2a284ba94c41c9-1742d36cc00","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3d96be54d0cb253fb24fbbc18d7764b3-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfb5fef5de71fc5669189ec18e80c633-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cb006f689378e1dfc4d73d81442bf5e0-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfe4e3e59319c55d39e42f454e70a3e0-1742d36cc00","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6de49a1e7edb7479f799087586930cc8-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"32a5ec4fbec26a387421648d3b3cfd64-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"44f64dc46d59c50f1ba141f1c422221e-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"de29791f0380207c3518aac867974a8c-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c60bb8d0b5d45bba89ecf2745fd1787d-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b27b76e58a329c1467139380fd5ad23c-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Caterpillar"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"84315bec8758e7b15e746485e380a861-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"29ddf85538e817259553cbe5a6bb41e6-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f5d01fdc7e8b80a553b92e0e3f3dd01b-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4701e0dbe7b34127694f891d13a986d5-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"61ab275a61cc0616372112e406ffaca2-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a38a9fdbe5f8326555e64ae57b93d59e-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5f777368cdb6ab0d463884af960ec394-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"African + leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7e2856d696bc35f4c1fc02725ea05cab-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d54763d71a14332d2761819be6ed76c8-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4d2faf4248f7a8a313b0c481d803e542-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"06624c901b2635ed1f4ce44fb5f2e4cb-1742d36cc00","startTime":"2020-08-27T00:00:00Z","lastTime":"2020-08-27T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c9131b6e66d512a4681d0ee32a03119-17428107000","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"e7a36ca6dca27257e34b70ab9e7dccbe-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"84407ce8d5790fa14e2b95a96a49a666-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f3a5ab87d5809aa1faba46cb958e9db1-17428107000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b5227389258ac73b5f07a4425ca1da43-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cc40511a7cb745ff811151ca54ad5ba8-17428107000","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"afed89785c1c4e9eeed3f9569a7dabc0-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c7fe6ab3690d4c937beca804e9d1f606-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f1eafda089ba4d5f3fb7584e69955449-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Beaked + whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cd59fe5193a104b489b27841b08858d3-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"82ecc8943f6093e6bf82cc9627f41d76-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f034bf7918142d6f1f33a7ab6af799c1-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"371d97a97ca26938bd6e7c44e4b7e7e2-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"78f30c2c9022b041c64d3ff2a032cd43-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4c16561b2c7996954586cb6788ebe4ea-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"80a1891b3f02d7c73625ff0c7fe62f06-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"886217d74276387ab304e87813cebadd-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfd0f6969d39b8687f10f25da91e4ba3-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"673951425995df633118682eaf281b96-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Arctic + Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"08a28a4db963e7f4a878da52cd18dc17-17428107000","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2a1d4188f8f452f64e8bbd6b5a97fb01-17428107000","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1ed17a92fa6951c3d7bd3388c501d61f-17428107000","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"63630c3417929aa30984db5598805523-17428107000","startTime":"2020-08-26T00:00:00Z","lastTime":"2020-08-26T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9dffafa3229c42ceadfaceb982dce356-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Amphibian"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"658146886f9eea1541904e20c652c836-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c00f3386c4a85b4d7dad96982fd1313a-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2702b876a1c7f4b3b0b4f77c8eab1005-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a7e16b7a48054da43017865ad9dc3210-17422ea1400","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Animals + by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0e37cdacc29175a1b5689e9fa6ff83f7-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e88ad7e1936c819c411ebf14386ac9c5-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"050933599751744f309c59d0c79f750e-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"563b06ee98279cfc71de4ad035e7fcfd-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0199a7484859345433ce3f09ea1e16e9-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3191767e8f21ed6e40e6678cae544533-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a79eb0471dab655862a6570f9642081-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"40f981ba9ac24ef15a8d5e54b4c95432-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5fc810580695e29c1998f3949e78d2b2-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bali + cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"99c0098e7258f71a589792798dff740a-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"80acd5e0b81aedacfca89429e7ceee44-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Ass + (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"497d898821166983b0566e842ffb99ed-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3203dffdb89ddff2c27902a867f95e0a-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"34cb21b660d13bacaa3db87802db364d-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f1589049fa2c7bb81631737442da2794-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed9d725f6ef9e4510728130d0fb66505-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Box jellyfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d219b1779ddaa3b962d8978d75d39b46-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c0c51e491014a195220888938b315d2-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3d27926af7aaa1dce10dd73cd5943ce4-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b02841db79eecb30f9c92376f3d6a9e4-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"32a5ec4fbec26a387421648d3b3cfd64-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e708c701adddd5fcb0385cf6acaea57c-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa4283ffb1575e891b37f4aa2dea43d3-17422ea1400","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81e3bf1c8520eebf1245c1b7426a6512-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Aspen","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4e761ca5ea08cd86b6dcec5658114126-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c0d6c24a636d6849bd12871437de14f7-17422ea1400","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2ba2ff597c78d3a417fd9d6750caf884-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"86c22e0983d57bce042ecfa085bfe1d8-17422ea1400","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f55e141d7f77eefc2395e268af311afb-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a0a1de83d9142d3cdbe20b516baa3e82-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d567c6254bcc0c08123850e26079c3c4-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"46b06ed6d6ccccfaeb938344dbe828c3-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"06624c901b2635ed1f4ce44fb5f2e4cb-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4a866958634752a389e2c252b7b41b01-17422ea1400","startTime":"2020-08-25T00:00:00Z","lastTime":"2020-08-25T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"387eccccff53934168d89930e3f2ef7f-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9f790c1c2dc76b4768e944e8a6becaa2-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a076d6d34994c478bcf5a71a0e81e7d-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Animals + by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6867d51ce45b8a136a1ce1bf720322de-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"30cd5834fdd569759064939a3995f8db-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"dd1478bd9f815bba0c2c7730a6da5a1c-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2e3a6cf5aee279d4f4231c5f0928cbbc-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"863353916661912880e8214df7a0237f-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ceb41534df0afd897a53c8d5aeca58d6-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3655be51dfe0bc729e81a6f4c8299635-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f11914e0219cf41f777de203faff2063-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d5fe255778a3022c66f4ed65ae45446d-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"883d6deade06d2e7196b4f4be3688e19-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"67aab648e26fdf49bc77a78e764922ec-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b5227389258ac73b5f07a4425ca1da43-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4ac42cf930d0d72fe3bda863d8f68ade-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"127c8ee94bac1880ef881d5d506b4982-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8a576a78b827cc2af797f23dd08b8923-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0998c5438e745065f2b4312721c48b8f-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"175ff739f5f490ea24884b6d1e8a9d0a-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0b8a3b066088da639be5b85a2a9f20b5-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"813c0673a0ecc31b731a8f4a25cdedc0-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"44f64dc46d59c50f1ba141f1c422221e-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d385e18843f853af2664557f89fd447-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4e7c2e8e78265269da5ad8ba515caa3b-1741dc3b800","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"40b821388a636fb151e7d1e08a51177f-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9e1d9ffc4c247b2bb4342e458387b481-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c1a59aab5541bebb7282cb108d29f125-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"843c3ff07438866b5ad48efca724bc9f-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0dd7026311b2b75e00d6921983458852-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e4ab22586b41c4c80081129424417089-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fc76c9f76d3f13a47c9ae576507dd3de-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1c8d30b1d369afebf8c7ac8693bc3941-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfb5fef5de71fc5669189ec18e80c633-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e62c7497e49e422ddb625daea6f214d5-1741dc3b800","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"82474748e69090743d5b0c4df8c1186a-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"63ed7dbaabf9e95124ee8709a80ff2b1-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"85d6b2dccc1d18213b3934c0c009550b-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"371d97a97ca26938bd6e7c44e4b7e7e2-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6cebbedb6fe1cf345d1120beeee9a133-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"34104bb5a81001d1f3057e2555e4134e-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"63630c3417929aa30984db5598805523-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"76cfdfd13767fd6041d5a3fd54900e99-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"384e438bd8d5b1f60ff22d4e729cd9b8-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e510c539547f7010234097bf5695be08-1741dc3b800","startTime":"2020-08-24T00:00:00Z","lastTime":"2020-08-24T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"59671e17866bc003f281055d01d7f857-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f7a6e4d4b0bb3715751301f1b5c3a406-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6ab218766d4a08224f812db22293ef3a-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"09951ce44a4ffa4c7a0be72ef7a3af19-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3191767e8f21ed6e40e6678cae544533-174189d5c00","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"788eab73eae508789c7be69f24106328-174189d5c00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a2d062cb9e1d03b83c18230120ed224d-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6455a499b1b00a0389ee27491e92d535-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"05a43c9a57a9ccb32aa4ed865adf4471-174189d5c00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"893eb8d20af179e6209f21c92a970bd1-174189d5c00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ea382499f4552fba68eeb6c838926822-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2b8eee6a985e6cfe252b6f55c8f8c693-174189d5c00","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"bf16edfb65f4cc59775876306dfde327-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"496f7401bd0f2e633390bad5b4cfe1a3-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c4a6e5fe6be6b97af3a9b891bc9eebf2-174189d5c00","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"788b86ea0242843d8e3554bfe14d1f36-174189d5c00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"113446a1c673896502f0526dea10525c-174189d5c00","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"61ab275a61cc0616372112e406ffaca2-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"74d84982464a96ff3eb95a4d5b1a0f39-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d4ee3adc7cb24e4d078627c2a42456b9-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3d96be54d0cb253fb24fbbc18d7764b3-174189d5c00","startTime":"2020-08-23T00:00:00Z","lastTime":"2020-08-23T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3d4126ed79bf9645d8fdc26dcbe988b3-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"010e484142c72bf862168db80cda5ec9-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"12bed2fa85a98a01bac8dd0d79f7a378-17413770000","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed8c8aab50f3cd57619d7878079998f1-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d197a7ce67ded42a1c3676a2a04137-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3daeef64a07dabc23c84eb45cd9a5f90-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1964ee989d55fcba205d68d9214ddcd4-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8e67be34ccd8a92caee9e341aaf39b41-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"African + leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"46b06ed6d6ccccfaeb938344dbe828c3-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b792e26b431147faf610bb0f11509090-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fee9eb2fede2af12f19716e1ff2c1062-17413770000","startTime":"2020-08-22T00:00:00Z","lastTime":"2020-08-22T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c9131b6e66d512a4681d0ee32a03119-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"d7bf4b69239f8e166506d2567eb2f98b-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00917e01b8bc5145a2ae207a8029fd11-1740e50a400","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d567c6254bcc0c08123850e26079c3c4-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a79eb0471dab655862a6570f9642081-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"478bfaf9cb37c8ffce71c0f7af317bd4-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f7a6e4d4b0bb3715751301f1b5c3a406-1740e50a400","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b6240cb868a60d25a0eccc0102be31b1-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"80acd5e0b81aedacfca89429e7ceee44-1740e50a400","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Ass + (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e5451767ef6f6806dc05a566802fe906-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"801cbfd6d996cfd00949ffa345080ba0-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c87c20ce60127f65a5b5370fbe17dda9-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a833e14118e95e40cb4fc649aa5e4127-1740e50a400","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d28097d28adb2cc7649bb3ba70a308da-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Black + panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"813c0673a0ecc31b731a8f4a25cdedc0-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d219b1779ddaa3b962d8978d75d39b46-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ac0a0938a8a3ff6c0a35add8b693ccca-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e212f5fa523c3a1f0f06dc3f81620b4d-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2c51e02ff667c860d9afd5217d575949-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"44f64dc46d59c50f1ba141f1c422221e-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"527b1817f9aa3bfa9e54734ee2f2ea42-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c57f69fbad080df7ff81ec0fbf41c5cd-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8094385bf71423605b1366eec41ae3d6-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"029caf6cc2201f710f5f8e7192082a76-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3305c4b4355ae50f0c55eacb257c1e41-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"63ed7dbaabf9e95124ee8709a80ff2b1-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b52c1252c75f402ab547294538e2dbd7-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4738dd46b9347e9bef2dd6b58235a1d6-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3291f08abbdb346c42ca6530d4a7255a-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0bf008e7d532ebe7455360188fb64dc7-1740e50a400","startTime":"2020-08-21T00:00:00Z","lastTime":"2020-08-21T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b2ed5f827e7ab8113a530113d32fe3a4-174092a4800","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"dda410546adb8260b7a7e363773c8e42-174092a4800","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a3dc1f92897a2b637fa8144fb1aefc2a-174092a4800","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c9613108a6390f7987ce02a5eb5eeeaf-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"18618a675da9f98c370b02c228536120-174092a4800","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"20a5e8ace6f8f6cdd30a05f3aec3eba6-174092a4800","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2702b876a1c7f4b3b0b4f77c8eab1005-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2a21a1f0f4ec1006cc974a4f0ec21d50-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"883d6deade06d2e7196b4f4be3688e19-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"589e1ce7435e10c4fd25dcf44e6008cb-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eb3114767a3cb51b4877574839fb5e1c-174092a4800","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2a1d4188f8f452f64e8bbd6b5a97fb01-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4a6b2318eba8e4259bec52a48fbc77bd-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"276e84aaa2fb05b90ac9de7c7718d439-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f078dd77fd1aedb38b90d541650c2d56-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fc7be04d67b32fd3ceaa6190db817f82-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Arctic + Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa8d10639f64317a08ca3858aaff4f33-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0da4f4ef4db7db9ba355c66e911e2b35-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"10a2fd212719f21a164a01d266c02b9e-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"78f30c2c9022b041c64d3ff2a032cd43-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0dd7026311b2b75e00d6921983458852-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4a1064eadd45877ace521127a421a27e-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"61ab275a61cc0616372112e406ffaca2-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9158283c7c17512155c3529bcec41328-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"02f6731132bc11fd8609d89e7eefd6ba-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"643e3a849425698b44c4c612a40dbb77-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6867d51ce45b8a136a1ce1bf720322de-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1ed17a92fa6951c3d7bd3388c501d61f-174092a4800","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"207433989591c50e00dad9f3d4191cce-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a66e6977f6d4e9b85c20d5a59cd6eb2-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4d2faf4248f7a8a313b0c481d803e542-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"43b41958443f7feb303aab3ccce585dd-174092a4800","startTime":"2020-08-20T00:00:00Z","lastTime":"2020-08-20T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c9131b6e66d512a4681d0ee32a03119-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"8f1141f1960920d22c2707879d014626-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"31c62f2f522db8dd0e1f4d654f16d6f4-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a310f9f4ca025fd13082e4af39cddd86-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fce08acbff5e1b83c3be5bd1524ac9cf-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5b79c442deadc226a779a962d8f6dbe8-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"834f6082b8e1bae6132721dc25da6e28-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5715372e5c54f3920ee9c59f75344dc2-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a7e16b7a48054da43017865ad9dc3210-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Animals + by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9dc2e60edb58ccbe08a19ded257fdcf6-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"34cb21b660d13bacaa3db87802db364d-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2cba0250b334090391b23a888cf67792-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"06624c901b2635ed1f4ce44fb5f2e4cb-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0199a7484859345433ce3f09ea1e16e9-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e212f5fa523c3a1f0f06dc3f81620b4d-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f400363d008aca387740a3a39b8684c9-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6de49a1e7edb7479f799087586930cc8-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00b89c31c14766a9cff07ec7c4793042-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0237fe843f8d155aa0cfb6d58ee00be7-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"956102fc96a8be4de9467d69e2ae12e9-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5f7de3e82ef25e6001194d66b26d0bc9-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c4a6e5fe6be6b97af3a9b891bc9eebf2-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8cc3eb717f3884f7a00bc6d93b04e973-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9e1d9ffc4c247b2bb4342e458387b481-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c0d6c24a636d6849bd12871437de14f7-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e708c701adddd5fcb0385cf6acaea57c-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"072bc0f89f39807f4afcdf324fcf4b37-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3305c4b4355ae50f0c55eacb257c1e41-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"dc406e1fa9a4900587230cbec61cfa43-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e62c7497e49e422ddb625daea6f214d5-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"755d52e21bcb49d0b5c854275f32ffe7-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7d36963cf78c2837046a3ae3d12b2aad-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81912614ff842321c98f3702c4bbffa6-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3291f08abbdb346c42ca6530d4a7255a-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3c8d51b69a01d320deda8d3a5eb49ce9-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"90d8fcd4293881f976bb60e4de7b4472-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"80766fa0ccc066f2d18eec7b89d9ae98-1740403ec00","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e1741ac8bcc5a8f5b17b1086b4a439cb-1740403ec00","startTime":"2020-08-19T00:00:00Z","lastTime":"2020-08-19T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d4ddf1d1b1f189390b4c64943fae661-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"743e56b6e3ed836b78218e7a13a34717-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"52a3e4f2749a3b0538081f40b28eaa2a-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a29635c29dbb571b813c41dc8b7ba0bb-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7dff9aa562bf22c7c62fba6539d673d2-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e33eed0b14062992cedbe7a624f10301-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7d6fae84c36e604d8131aeb768bf1b87-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a849a17fbdf7139b89e5d928d7b1fce6-173fedd9000","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"799056242ef6d4822523bc6bfa62f682-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"92cc6478c0dbcf6a5289a80ae5958ece-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ceb41534df0afd897a53c8d5aeca58d6-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b296e03e2dccc33ae4976c9f27b89857-173fedd9000","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"beb18122021a083c75556891279e8f70-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c75d9f6f328c441d1de657653fd5181d-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f6edbd851116753ad72e2b9a3993bf5a-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Blue jay"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b29e39159e737743ee936b51d05e75ca-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5659505e508ae42bc0cc7cd8d142ad7b-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0bf008e7d532ebe7455360188fb64dc7-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3203dffdb89ddff2c27902a867f95e0a-173fedd9000","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e5451767ef6f6806dc05a566802fe906-173fedd9000","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c7467baf2d9f71720c5e2feffa91bfc-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ea382499f4552fba68eeb6c838926822-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f1589049fa2c7bb81631737442da2794-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3d96be54d0cb253fb24fbbc18d7764b3-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b6c603d31e3c5ad6526cbd081eab1c10-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"de29791f0380207c3518aac867974a8c-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"92ffa91036a54c710b83dfd28086b318-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"99fda5745c2e36dfd23fdc7de37d458c-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d5b68b26c968cf1a10d4940a0194940d-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c57f69fbad080df7ff81ec0fbf41c5cd-173fedd9000","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa4283ffb1575e891b37f4aa2dea43d3-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ff90139099853ada62129768539a6d5d-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"82ecc8943f6093e6bf82cc9627f41d76-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9a591f19a631a8cfac1b707ea4f761a8-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d05e2c3e193e76d17ced6e407da10d2b-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"91e59c4592c443cf5d9f7a51e6bde8c9-173fedd9000","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a587ba21ed0913f94f43b63fcfe0df7-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"428ba866eac42b1fe0aeedfe1077a877-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"bb32e5d8b333a6943d6a4cec8c3101de-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8a576a78b827cc2af797f23dd08b8923-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8607e13cc2a6125124d1c89c267bb38b-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"76bcf1b89f80bb629dacbd68ed42c5bd-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"29ddf85538e817259553cbe5a6bb41e6-173fedd9000","startTime":"2020-08-18T00:00:00Z","lastTime":"2020-08-18T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2f3263eff7ebec71575d55701cf91f87-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Amphibian"}},"property":{"maxSeverity":"High","incidentStatus":"Active"}},{"incidentId":"8d134e1371ab5e3c92ae66f54795a0f6-173f9b73400","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1e1006ac3851061bec92116289b0608c-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a79eb0471dab655862a6570f9642081-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6455a499b1b00a0389ee27491e92d535-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cecc0a8f12ab522e9b7b0c283df72b54-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c4da5594bf24ea55abd22b0f7fd48f96-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c85874f88ce0d6636595ef2eef588f48-173f9b73400","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d219b1779ddaa3b962d8978d75d39b46-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c0c51e491014a195220888938b315d2-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c87c20ce60127f65a5b5370fbe17dda9-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00b89c31c14766a9cff07ec7c4793042-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"813c0673a0ecc31b731a8f4a25cdedc0-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"21f94029b6b05f37c46e06592244a983-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Cardinal"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5babfaddd5f24bde9e0cc83344d857c0-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f1eafda089ba4d5f3fb7584e69955449-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Beaked + whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"647e0ce96cebdeb7234156bf4daa10a2-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"American + robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a3bb050b8e8d029c17fc3aa719846fc7-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Arrow + crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0cc8d82361998d912a49eeaa5a568200-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2ba2ff597c78d3a417fd9d6750caf884-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfe4e3e59319c55d39e42f454e70a3e0-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9686e3cc99ce6efbb9bb57556144dd25-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a38a9fdbe5f8326555e64ae57b93d59e-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a0db70328693dee28cb73c660a563de0-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7417b570f4b6b8c6bf0e76f07abff4c7-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e9a181d50e5fad2bc5a2cc93d5c5be1e-173f9b73400","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"629c77943696242a4e5f75f13c9c6e95-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"76cfdfd13767fd6041d5a3fd54900e99-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cc40511a7cb745ff811151ca54ad5ba8-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e493f687b7113e26a585b0fb28afa7cb-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bali + cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c6c9c8af5c0626bd032915765c47c3c6-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"22dd737ffc91834762d2dc7efb3c09d9-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a5841ab4327457478ae32b8782821415-173f9b73400","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c688a00870964f137dc18dfc6ac17421-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fabdce0aceb3785ebe22180c8f70bd62-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"932cde3967db70711ed9761d636e70fa-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81e3bf1c8520eebf1245c1b7426a6512-173f9b73400","startTime":"2020-08-17T00:00:00Z","lastTime":"2020-08-17T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Aspen","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa02a59a9da76f3681e37b9cf1ba3bc1-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Amphibian"}},"property":{"maxSeverity":"High","incidentStatus":"Active"}},{"incidentId":"3f6d7915d639fb8d8a4bbdff0c5d286c-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Alpaca"}},"property":{"maxSeverity":"High","incidentStatus":"Active"}},{"incidentId":"affc84d4bba9a65e580a3cf6755d8ef3-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Alpaca"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"48b5553b21d63aaf2eda299da258e7a9-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"2e14a130f967b3764d434f470ed90c79-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bat"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"d8ec38c82904fc0ffdc8221cea9b48f7-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ape"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"b5b9ede5671b61b19574d08cde731de5-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Ape"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"d39ba889ac01ecfb6074040a1556b09c-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"62476afd9bf098101eef349ea6bf11b7-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Albatross"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"a3dc1f92897a2b637fa8144fb1aefc2a-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African elephant"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"e7a36ca6dca27257e34b70ab9e7dccbe-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"8178e2274e83d047e2962cc9021740dd-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Amphibian"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"cea2781e2ebb17c20b3614bc901e7234-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5800a7718cdd105d3df4b169401db1f7-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7e9be554e1d5416a349427640baa9ea5-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c438f048b30b98bdba8874dea91f8a75-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"473422654c9a13a80a5d3e4f3fce6225-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5d60b2652cde380df98c122774c3bfe8-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"87be661e174b9e13d0527649a74786aa-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f663bb47feec7311609484568b329a05-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b744b8f0c891cd73fefa8c209039a581-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a37d0c3ae699587692341d47831cae5d-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a9c221fa13ed1a7b8ddd9457e1601f55-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"301bb7eea70421287f206c5ec9143606-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6e7f3460dc2329d609723f268971ea4f-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7a2acec2d56f800b54e4bfb637979573-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7da4cf1671df0f941ec3ddda54561839-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4c917f96e757797ea674ab6bcb245a6a-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"02425c6260bca870b822b1091e1b030a-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5e693c0f522a11fb7938803e3386d43e-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e9a771c92b1b8a40d70cbfc89edd03f2-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b27e25e90f10a2679a8dc87ca7bd6be0-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0b46a044b6d592a45e2508d584bf16a3-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fbfe65cede0024601eec4a697ed957ab-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6afd6f5ee7a97a49220bfb014c64e417-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"91dd29f914d9ec8f118ff45ae4a45288-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8574a6fb0f5124381263704c82ab735f-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3de1bb2f38294107eea364fdf7e9c5ff-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8d26b9c774a930cb5dcaa13a1c0a3ea0-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e63da4b3b9f085dd48a72ed9a34a09aa-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"86e85ca32b3ff7270a89c46b5323c208-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4b239d1ffefa67f23071fbc39dce63fa-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e765a24fd08a5208c8307c292241552b-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1b258da33470143846c3906ca2a632b7-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Animals + by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a3ffa3ce6f9e628d20cae4e3ad4c1b14-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0e6f3b78509ee82efaa76412fc5e9fb4-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0c12694a318199d668bb60432b719700-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4ab7b756894564b9e845cf9a91ec962d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3e3789ef957f68182ecd6f42079affc9-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Animals + by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"407aaccc44d2dd79d227f1f47956eb0f-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a1221b473717e2beda023ddcb3591027-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"25981c93bab7e74cb3b6af65075a18c3-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed1945350561ce57fd45860c49e7605d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4236b68470d3b8c3d7fb9d4aa83e442a-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a57a441ee18b1a781e2344706190b8d8-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"983d100f8e319cfedfe16bfeaf0f150d-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c3ecb659683973a2c76a8bf2a7aabeb0-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3e46d7410825743014703be78cc525d6-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bali + cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ad58803b70615cc0ea4d016c6540f10b-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ac7f0f60305bde2826653406c7bc296d-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7ee8cc5814bc8339f3049b2913f2794c-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8a0fdc0de122c7daef5c37dc1447d2c8-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"825280c8d4608c90c4ea2e3c9ff5846d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Beech","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f0ec54044b14f05722c1dd6e9e2ee770-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c3ea31010e92e5d097ace4053ff7a939-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c6c1f9e9751660df89ce86577656ae12-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Black + panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1574e9f113073062bc93476ee179a2d2-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e7eccc088918e7286e480de1c2b15b19-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"78eaf876411af828c8a66e9147ad2af7-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"862f06854cdcb11770692bfde132d4b0-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6cf9524292757836c2eec2e14fdab244-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eaf74390f3baf2f348e9d782d171c461-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d10ac3ca65b163123b615cf49c7b69d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"01bce2b7bc20fa236c87a57421728075-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"65b5141d6bf9d7da267fc9b53439919e-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"06a240ec63ff8eb1f19b47a5168db921-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0f604552873bb3e03f836e8c5da15c29-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"093093136ae4ee51248525a86c9162a8-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2f2e19710ef2d44fc1cd59ff9796c753-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1b6c0e7d681c2d0feb3044d05ed7eb26-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6c6621bfa41faa7d2b370752dbb4c3b3-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a6a239ae68312b70cf66f778a7477d41-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81d072a81762c6085de6fa8178a8faf8-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"20a5e8ace6f8f6cdd30a05f3aec3eba6-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2515b0255f013bb2cf92016c43b1a9d8-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bali cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8b607981c1a42ad6fef70ac9e15d4cff-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"563b06ee98279cfc71de4ad035e7fcfd-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d5fe255778a3022c66f4ed65ae45446d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2cba0250b334090391b23a888cf67792-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ffbc33d6cabb0f1f0506580c147d0c47-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"73561fa50ad6459fe0b8f9bf74e30a81-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"84c4b83f374581f9ea685be4a063abd5-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1e18994824d880a47de4f87cde3018c4-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4a6b2318eba8e4259bec52a48fbc77bd-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0998c5438e745065f2b4312721c48b8f-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4157b275ca73cbd0226552eb73e2a963-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0237fe843f8d155aa0cfb6d58ee00be7-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2b8eee6a985e6cfe252b6f55c8f8c693-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d8ca9275fac073d5f48d2789fae060-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bovid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"127c8ee94bac1880ef881d5d506b4982-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"bf16edfb65f4cc59775876306dfde327-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"90d8fcd4293881f976bb60e4de7b4472-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0858072e1e89be918ad8c1b38e5156d9-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bali + cattle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3e04f3cfaeff3247b8d216982f98c96f-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"94b1070d82d2a24f68ee459fb4dd031f-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"10a2fd212719f21a164a01d266c02b9e-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8ec165a0e9bf58e16ff062813d87df1d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"78f30c2c9022b041c64d3ff2a032cd43-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81bc0798412f4dddab87bc1f842bdbbc-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5fcb11c1b7a95a93165e51820ede686f-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8fbefa2c60f8c1bff6452cb2d240d94e-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"72fef2ce451a9570e89fa0ee33a2ea5f-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7634063ba3975e6c492fa8ed3c48b1ca-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"988cfe0b1258c43dcb3d2ed56aa0929e-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2ad1029a1a921807138b4a9de87e0b29-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Ass + (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d05e2c3e193e76d17ced6e407da10d2b-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"53cf37cb06cd78db81810decfb9bcd07-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"86a24d29f4b0bb3def4022d90c456f0e-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"77a5c068834bf068189b0df48219028d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4fb5824a952aca734162b76ad8d75e07-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"372fc72ff4b4148d138cc827aae8f172-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"da6bdb54a97d59967cdb86a188a80578-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"faa41dfc3e63a426b13809cb6ae05f5d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"eeb9c14d94d7561a1757cafb5857786e-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"315b680fa4dc2372fa859d0dd1103162-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3e2a8e746d5bf3949a7e7c04f5db10a2-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9664d1509d5c9c6cdab967a48ed43a7c-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f471a0ebff9f1b4c3a71b03faced6ec4-173f490d800","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2a21a1f0f4ec1006cc974a4f0ec21d50-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"97796fa71d33ea33129206a475cc5d5c-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3ac2f16d58ce1784eac5256e29bf2f0d-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"72efcbe8df4b3454f83a1229a1e12428-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"74235ca567265b33c4888c252a829756-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ec190978fe5340f3a4a3ccc36667db92-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9ac4c95d5be44546d4e950980c4fb805-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"07b3f78d099b7d35b4d5d59e1a21d1e1-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8a576a78b827cc2af797f23dd08b8923-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"df208b3f67f60ba6d0f5b0f803f4bb1f-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"52f41fd7eb1c79080f7e1ea88de20f0e-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ad65c892c9b628dbb524a2dbf1edc502-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Aardvark"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6c9fc8a6a683f95c87e4e5c56f6d63c1-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"80a1891b3f02d7c73625ff0c7fe62f06-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by size"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f7409a9cf8e364d46c3e08a7f9eaff60-173f490d800","startTime":"2020-08-16T00:00:00Z","lastTime":"2020-08-16T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"28421b69c26bd4e004d2c9d26c7020ea-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Badger"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"4e3334fb5401357d5c07008517224a8e-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Basilisk"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"35335fb05115324e42868c51bd29f060-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0e2f472c7dbd692fba8923c2f7f09c90-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"623f8a4e5db7f6dceddc5eee5e0580f5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2f7a6d9edce151ce2fc44a304917c1e4-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"32ebefd2c1b449dc029c80729b51e5e5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5a51fda385a078b13f873cf1215c87d5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"10b650ca149ca53aa787cd482718838e-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"32dbb19962929a94db7a860d500d685e-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"658146886f9eea1541904e20c652c836-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"22959a995b07fffa7418fa717520b3f2-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"African + buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3bd3098f59ee7844fbca7b1f08d43f52-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2e1eb185f5343ffdf708d8541785b37f-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"49db17e1cc7e839a3fcd995b8ee992e5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3ac5de822c4163e11dbc5a10bf64011d-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3eebf692817806b3f5540b2c244ac8a2-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"280ff58f97a81a6e025413c3ef54432f-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"09a1ad568b24b07a09a5aafb3b3b8eb5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"60a4bfeb9f18e9393640444cdfecb276-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"479cbdd49f9e5a1466b63bc62aad04f3-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"58fc30bc6a168cfa0d486a6af77e0802-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"09435cd640b7340a5a0843828c218e82-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0f1cc676aadd0cc1b50a02b4dca56846-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"48358c737de3c7fa192e4468f42d4eb3-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"60c7bd3490b72a501f96ffc3550ced3b-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bald + eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1220bb055cee1ae86c5b230bcdaafd27-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0a21f7096fe2d575c3017b264f2acd60-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00fbb269f85059a69dd16a051510dd74-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Ass + (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"047a2c5a7bedaffb7cafd3b9fdb287c6-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4cbdd3c280c5e1c03a1b75d80a5c254f-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"383e61380621f6a6288fb27ffc359df8-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"02fd8a6b5271910b2335f84e6c309bcb-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"16504d092eec0dc756e9568e45536d5f-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5988cf3bfe979264d391d184fdd04c04-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4ac8f18ce9fbbd758fc3b1acbc145dd4-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Beaked + whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5855dadac7d09ffb6ccec6f96dbfe621-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2c895672c3c033c57d0f26f5273c7ea3-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"130cf6af80e05faed85e0710e72adfa4-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"614de91a9df5b704fb46b2f756678398-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2bd925c013407b08e4ac97e6a392a59f-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"010e484142c72bf862168db80cda5ec9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"19a8b22a0e708d7fac140174b5a76ba8-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"497d898821166983b0566e842ffb99ed-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"589e1ce7435e10c4fd25dcf44e6008cb-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5659505e508ae42bc0cc7cd8d142ad7b-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4c795cbc9707d8bd5f5aab742fd1c5dc-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0199a7484859345433ce3f09ea1e16e9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1964ee989d55fcba205d68d9214ddcd4-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"32a5ec4fbec26a387421648d3b3cfd64-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1b7dac0b25b4b609de56f35beed9237d-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5dab47a777cb20243f5c711c011bc625-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"African + leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5f91b848647fdad9fc89cf702c76f361-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2e937f11d264be5c73119b80a27d42cf-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"599127444e3890439efb9990e31c287b-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"30cd5834fdd569759064939a3995f8db-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3ef422945d263e10bda68f7e4410c4b7-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"34104bb5a81001d1f3057e2555e4134e-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3717bb14413ea653478556ec30adb409-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5f4e45c429c9174f9acf08df4af5e317-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"46b06ed6d6ccccfaeb938344dbe828c3-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6509b04581eaa307e69f9a01a4023998-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"544960f53a0e9840a5ec268bb6ddd5c7-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"629c77943696242a4e5f75f13c9c6e95-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"African + elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1bb9530e7d6e50a21229bbf8ec399b6d-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"63630c3417929aa30984db5598805523-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"22dd737ffc91834762d2dc7efb3c09d9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"00021aab166f3cbdf0fa06c2698fb988-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Ape"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0f828a31e8b181794221615367e72527-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Arctic + Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"43b41958443f7feb303aab3ccce585dd-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0cf6d7792cd7c9e90432cf3d7df1d55d-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/incidents/query?$top=1000&$token=eyJtZXRyaWNJZCI6IjNkNDhlZDNlLTZlNmUtNDM5MS1iNzhmLWIwMGRmZWUxZTZmNSIsImRldGVjdENvbmZpZ0lkIjoiYzBmMjUzOWYtYjgwNC00YWI5LWE3MGYtMGRhMGM4OWM3NmQ4Iiwic3RhcnRUaW1lIjoiMjAyMC0wMS0wMVQwMDowMDowMFoiLCJlbmRUaW1lIjoiMjAyMC0wOS0wOVQwMDowMDowMFoiLCJuZXh0IjoiTWpBeU1DMHdPQzB4TmxRd01Eb3dNRG93TUZvakl5TTJOVGd4TkRZNE9EWm1PV1ZsWVRFMU5ERTVNRFJsTWpCak5qVXlZemd6Tmc9PSIsImxpbWl0IjoxMDAwLCJmaWx0ZXIiOnt9fQ=="}' + headers: + apim-request-id: + - 63fbd172-0eac-4dc8-be3b-853e2d3a2169 + content-length: + - '259499' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:06 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '496' + x-request-id: + - 63fbd172-0eac-4dc8-be3b-853e2d3a2169 + status: + code: 200 + message: OK +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: GET + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/incidents/query?$top=1000&$token=eyJtZXRyaWNJZCI6IjNkNDhlZDNlLTZlNmUtNDM5MS1iNzhmLWIwMGRmZWUxZTZmNSIsImRldGVjdENvbmZpZ0lkIjoiYzBmMjUzOWYtYjgwNC00YWI5LWE3MGYtMGRhMGM4OWM3NmQ4Iiwic3RhcnRUaW1lIjoiMjAyMC0wMS0wMVQwMDowMDowMFoiLCJlbmRUaW1lIjoiMjAyMC0wOS0wOVQwMDowMDowMFoiLCJuZXh0IjoiTWpBeU1DMHdPQzB4TmxRd01Eb3dNRG93TUZvakl5TTJOVGd4TkRZNE9EWm1PV1ZsWVRFMU5ERTVNRFJsTWpCak5qVXlZemd6Tmc9PSIsImxpbWl0IjoxMDAwLCJmaWx0ZXIiOnt9fQ== + response: + body: + string: '{"value":[{"incidentId":"9d5c4be357ab910ff92b0a810e36b3c1-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"African + leopard"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"79fa6b2d43fcebaceeb9779633d98f1e-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"9579e9cba3b4f02a95bc66bf22bb0b17-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Fox"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"b2ed5f827e7ab8113a530113d32fe3a4-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"6ca158bf56fce054e59769e02ce60ce5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Basilisk"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"ec8664153851031cc428baa917138df7-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Badger"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"e023f8f2829676c9e08418b7d2c73552-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Medium","incidentStatus":"Active"}},{"incidentId":"674090886eb148a34d6c719e5ef3dd10-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"756442a2fc87d2079a5b3f0e57c66033-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3bd3098f59ee7844fbca7b1f08d43f52-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3eebf692817806b3f5540b2c244ac8a2-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"28421b69c26bd4e004d2c9d26c7020ea-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"047a2c5a7bedaffb7cafd3b9fdb287c6-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"02fd8a6b5271910b2335f84e6c309bcb-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"614de91a9df5b704fb46b2f756678398-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2bd925c013407b08e4ac97e6a392a59f-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0f828a31e8b181794221615367e72527-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Arctic + Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"32a5ec4fbec26a387421648d3b3cfd64-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"aac0012066d2bde3b2467c6c3a4c2bda-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ea7c3c0de32117582a2a53bc1afc7422-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"acf8246b316abc7f599cd60ec084bfce-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e1b8ee9e3b639ef98342c1c2f6704542-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7a8e6dece2a0d506c80027a3438b03f8-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"bb023bac599b4e83135e2256a71fb815-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ab46dccca644854614af014e7b2dccbe-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d11b57f73e4f4518817aacd4e7b7c395-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8be5c1fbfe2006d5c2286b31ca0b1df0-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a322d49d5d58ed2ac5437773c6236a24-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c8a4d47ab45d8adcbfaba85bc7825026-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Amphibian"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6660c5420193a4240fa57e5b846d374d-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8de44e7bddd81415d2b304312ac3ecd7-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"970ce26ee86ee0cd5f213562c5a28272-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Antlion"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f265881f5532c5ab727abb669279de14-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"daacc3c319c8a76983cc600dea26a393-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"99dc13312f1d65283e1067d91de2621e-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b2940f68e5ae134b7932c6d227dbbaa2-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ed31c4235f913b7b45987184c07379b2-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6fecf64cf0df96931370c46e140aaf92-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"caabe3886eae90bf1d09549efdffc8f3-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6930cee5d8efb94c8329f9b80ff43859-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"85936fe51247075a7e655820014c2896-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"69df271d4cf73e88c816dd6e22a1f9c6-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ee633dfcfcc9ac228b4e5ac1de8b1e12-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e701b444044c59de6d66dcf54fd28d22-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"American + robin"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d7a12d51bf04841e0dd376f7408f5049-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Beaver"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"93c97c1fe02a4c2086bf96b80ab67e50-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b4dfe5a9883124fb273757d246542349-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d8675dc8718406081efbd5ec4cbcd855-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arabian + leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6c75474e02e49a5d7d8d3bf940603dba-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6b19ec4f1ef5e97d1fd2eac0994f1abe-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Alpaca"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d416005134c8d5d5cc9295166c44be5c-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b44d1721da29838169e8c09ba7bded1e-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9da4d51708e88047136b701d127538bb-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e239a8d84abf4bbda4f827f043d689e2-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"750d3148d3ec276e09e160ca5f3bcb30-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7bab457d4d7ee6055b24313a41143193-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f1771ac778019c150cb774344250fca3-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cbecd859eebd4c1fd0284c63e70e0979-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"69ba26def626ca7d201928c3bb7ba9a5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"faa12efccfc87ba03d8d757bc2f0b0c4-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaked whale"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9873d1af0ce8b6d687ee40cb84d52af4-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7d36963cf78c2837046a3ae3d12b2aad-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fd11d8b8a7b0bf407fde126c79da7c3b-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f4682287e688d43ab4307ab7d5b37738-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"beb18122021a083c75556891279e8f70-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Hazel","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e6d197a7ce67ded42a1c3676a2a04137-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f55e141d7f77eefc2395e268af311afb-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f11914e0219cf41f777de203faff2063-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9d56df63ed4f3851ad3b285815e29fac-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ac0a0938a8a3ff6c0a35add8b693ccca-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b83d89638052b6e1c2decbd750525ef9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Asp"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8b5cae1cfda637d2a94b9a933f410b26-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Arctic Fox"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7006b9e38424d58f89a05b919013424f-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Anaconda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"ec694c925571ab2b4c3ce88422cb3665-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d5b68b26c968cf1a10d4940a0194940d-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d2a5002cd00ebec39e06ad75d7f3f8b9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfd0f6969d39b8687f10f25da91e4ba3-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5dab47a777cb20243f5c711c011bc625-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"African + leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"4c795cbc9707d8bd5f5aab742fd1c5dc-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d0bd1cbd6cae2dcac548465f64921420-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Black panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b4cdf624930e65e6f94c2e0428cb0f8b-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"86b0965be0f4391fead2c362e4600a2f-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e12f39f56c01be31b42e1514c652b877-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bald eagle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81912614ff842321c98f3702c4bbffa6-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"91e59c4592c443cf5d9f7a51e6bde8c9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9686e3cc99ce6efbb9bb57556144dd25-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d60e1715357ea6ad59d851c0c80c3fc9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a3cc2ceb63a8d692b97b3c9048a7b39f-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"8d59178c8752127ddacd4ab6f13564d6-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"baf21d62280034d070c4b9fd596225c6-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"African buffalo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"72cc29476cc98841fcb05fe69e74d967-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a32aaee7e0bf17acb4afe1482209eb5b-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"841f42bf736cfe648329150663edc81b-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"dd1478bd9f815bba0c2c7730a6da5a1c-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"fa281ae71357208f14ccb83392ed5d4c-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Alder","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e88ad7e1936c819c411ebf14386ac9c5-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b051b82f932c4273ed698738b2df6cac-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b59811d40e7801d440a442eabe0402e9-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b7dcdcef99b523f2ae9eb58b44bc9d59-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a0db70328693dee28cb73c660a563de0-173ef6a7c00","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Badger"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c98d4083edba5a3854a69a40f2179b9a-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Barracuda"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d5e408bd19414b611022252cff4e5f8a-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"American buffalo (bison)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7e2856d696bc35f4c1fc02725ea05cab-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"91690e5d2342b154687d34b4320f9b0a-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Black + panther"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d4e1c1bd0063ac97a4b993f8a888eed2-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Almond","Dim2":"Ant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c6c9c8af5c0626bd032915765c47c3c6-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"cfb5fef5de71fc5669189ec18e80c633-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d4df57248c9c1ee210cd2e7367b9a675-173ef6a7c00","startTime":"2020-08-15T00:00:00Z","lastTime":"2020-08-15T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"1a3a1317fdc0c9a3954d775d4b7d5da1-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"2d20cd927b7a8a6ce82d3a4da4c10c28-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"618fade71fbd5fbea19488d3a4a62d18-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"59671e17866bc003f281055d01d7f857-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"3ae1927be5c685a76fd9784744c082bf-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"11dceb6e56c7639fb5da33e8aa2d34a6-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"28b93e5bb5ed5b9fe7e802650b689444-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c9613108a6390f7987ce02a5eb5eeeaf-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"306e4492ab8f87c0cbd03e1ede184e57-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7837af6071bd64fa9ace39b494937ca8-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cider + gum","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0b8a3b066088da639be5b85a2a9f20b5-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f7a6e4d4b0bb3715751301f1b5c3a406-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"f6edbd851116753ad72e2b9a3993bf5a-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Lime","Dim2":"Blue jay"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a4cb5f253e30bec6393052987af01168-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Ass (donkey)"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9a591f19a631a8cfac1b707ea4f761a8-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"6b5c2510e20a73926cb189d84c549d1c-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"d206065246c00ab74315b4298da76e1d-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bat"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"76bcf1b89f80bb629dacbd68ed42c5bd-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Anglerfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0da4f4ef4db7db9ba355c66e911e2b35-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Basilisk"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"821d9ae36b6637a8c39793d0a5c17cf7-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arabian leopard"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b93f657e9633927a1155cbc6ed4bf5d5-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Poplar","Dim2":"Bass"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"0b03e5ac6ea74eab1d2643a0f6d5838a-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Birch","Dim2":"Arctic + Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"85d6b2dccc1d18213b3934c0c009550b-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"e525a81b583ed149e12ed726f74b0f74-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"16b310c0cbde77dbf499341e070d6f20-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bird"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5c64a49e41184760a3a42f6315469ac1-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a027c67fe5bfe533336358bd3d85d94f-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cherry","Dim2":"Barnacle"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"a7886c30eaa9c16151eb1e3927c9853a-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Aardwolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"267f0c5ad4c1b049d6fd59a784d6c01d-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"428ba866eac42b1fe0aeedfe1077a877-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bee"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"76cfdfd13767fd6041d5a3fd54900e99-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"b6e2f812603af7d529884da490407381-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Albatross"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"c4e7b3b4aa13b0e3f70ce3b98b8a1644-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bison"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"736d99fc5d108003d75bba057875dbd1-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bedbug"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"7c7467baf2d9f71720c5e2feffa91bfc-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alligator"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"5babfaddd5f24bde9e0cc83344d857c0-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Baboon"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"9ebaf278493cd8716b31d2f9a7f5a1d5-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Common + Walnut","Dim2":"Armadillo"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}},{"incidentId":"81e3bf1c8520eebf1245c1b7426a6512-173ea442000","startTime":"2020-08-14T00:00:00Z","lastTime":"2020-08-14T00:00:00Z","rootNode":{"dimension":{"dimension_name":"Aspen","Dim2":"Aphid"}},"property":{"maxSeverity":"Low","incidentStatus":"Active"}}],"@nextLink":null}' + headers: + apim-request-id: + - fbb7d32e-1178-4d1e-801f-7bca02f22793 + content-length: + - '37890' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:08 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '563' + x-request-id: + - fbb7d32e-1178-4d1e-801f-7bca02f22793 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_metric_dimension_values.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_metric_dimension_values.yaml new file mode 100644 index 000000000000..4b183e464ae4 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_metric_dimension_values.yaml @@ -0,0 +1,87 @@ +interactions: +- request: + body: '{"dimensionName": "dimension_name"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '25' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/dimension/query + response: + body: + string: '{"value":["Algerian Fir","Almond","Aspen","Austrian Pine","Bastard + Service Tree","Birch","Black Birch (River Birch)","Black Mulberry","Black + Poplar","Blackthorn","Blue Atlas Cedar","Box elder","Cabbage Palm","Caucasian + Fir","Caucasian Lime","Cherry","Cherry Laurel","Chinese red-barked birch","Cider + gum","Cockspur Thorn"],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/dimension/query?$top=20&$skip=20"}' + headers: + apim-request-id: + - de769b65-714e-4958-9c62-1a67ff37dfdf + content-length: + - '497' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:10 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '96' + x-request-id: + - de769b65-714e-4958-9c62-1a67ff37dfdf + status: + code: 200 + message: OK +- request: + body: '{"dimensionName": "dimension_name"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '25' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/dimension/query?$top=20&$skip=20 + response: + body: + string: '{"value":["Common Alder","Common Ash","Common Beech","Common Hazel","Common + Juniper","Common Lime","Common Walnut","Common Yew","Copper Beech","Cotoneaster"],"@nextLink":null}' + headers: + apim-request-id: + - 8d5197eb-33ca-47cd-9229-411d07d52982 + content-length: + - '175' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:10 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '97' + x-request-id: + - 8d5197eb-33ca-47cd-9229-411d07d52982 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_metric_enriched_series_data.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_metric_enriched_series_data.yaml new file mode 100644 index 000000000000..af30590db27c --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_metric_enriched_series_data.yaml @@ -0,0 +1,43 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z", + "series": [{"dimension": {"city": "city"}}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '125' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/enrichment/anomalyDetection/configurations/anomaly_detection_configuration_id/series/query + response: + body: + string: '{"value":[{"series":{"dimension":{"city":"city"}},"timestampList":[],"valueList":[],"isAnomalyList":[],"periodList":[],"expectedValueList":[],"lowerBoundaryList":[],"upperBoundaryList":[]}]}' + headers: + apim-request-id: + - 524c68e3-cd44-4c61-a893-725f62a2cb04 + content-length: + - '190' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:12 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '199' + x-request-id: + - 524c68e3-cd44-4c61-a893-725f62a2cb04 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_metric_enrichment_status.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_metric_enrichment_status.yaml new file mode 100644 index 000000000000..c89deec086b6 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_metric_enrichment_status.yaml @@ -0,0 +1,42 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '80' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/status/enrichment/anomalyDetection/query + response: + body: + string: '{"nextLink":null,"value":[{"timestamp":"2020-09-06T00:00:00Z","status":"Succeeded","message":"{\"CreateTime\":\"2020-09-12T01:29:10.153Z\"}"},{"timestamp":"2020-09-07T00:00:00Z","status":"Succeeded","message":"{\"CreateTime\":\"2020-09-12T01:33:40.164Z\"}"},{"timestamp":"2020-09-08T00:00:00Z","status":"Succeeded","message":"{\"CreateTime\":\"2020-09-14T20:53:05.120Z\"}"}]}' + headers: + apim-request-id: + - 414a6e3f-6bca-4fc2-b59d-bfd3c86c163b + content-length: + - '375' + content-type: + - application/json; charset=utf-8 + date: + - Tue, 22 Sep 2020 21:58:49 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '225' + x-request-id: + - 414a6e3f-6bca-4fc2-b59d-bfd3c86c163b + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_metric_series_definitions.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_metric_series_definitions.yaml new file mode 100644 index 000000000000..b7d431820afc --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_metric_series_definitions.yaml @@ -0,0 +1,3740 @@ +interactions: +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Antelope"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=20"}' + headers: + apim-request-id: + - 085d1c91-9866-4093-9339-434dfd18cf40 + content-length: + - '2320' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:13 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '110' + x-request-id: + - 085d1c91-9866-4093-9339-434dfd18cf40 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=20 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Antelope"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=40"}' + headers: + apim-request-id: + - 3c58b190-7f93-4e7a-bf07-2f691ff21bbe + content-length: + - '2308' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:13 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '87' + x-request-id: + - 3c58b190-7f93-4e7a-bf07-2f691ff21bbe + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=40 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"African + buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bedbug"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=60"}' + headers: + apim-request-id: + - cbfc6ff2-34c3-4f6b-a99a-2a9a279422f4 + content-length: + - '2314' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:13 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '102' + x-request-id: + - cbfc6ff2-34c3-4f6b-a99a-2a9a279422f4 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=60 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bear"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=80"}' + headers: + apim-request-id: + - b00c383e-03c1-4851-a7b8-6840898cbc4a + content-length: + - '2312' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:14 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '147' + x-request-id: + - b00c383e-03c1-4851-a7b8-6840898cbc4a + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=80 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"African + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue Atlas + Cedar","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Aardwolf"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=100"}' + headers: + apim-request-id: + - 079c6977-5b9c-4e04-b9ba-6c17ae9ac15e + content-length: + - '2342' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:14 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '131' + x-request-id: + - 079c6977-5b9c-4e04-b9ba-6c17ae9ac15e + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=100 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Animals + by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"African leopard"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=120"}' + headers: + apim-request-id: + - 20fd82ea-cb51-407d-8b64-a0f5299513a9 + content-length: + - '2400' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:15 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '140' + x-request-id: + - 20fd82ea-cb51-407d-8b64-a0f5299513a9 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=120 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Animals + by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Animals by number of neurons"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=140"}' + headers: + apim-request-id: + - 11d6c54d-b2cb-4a72-8edf-b2935dd5be71 + content-length: + - '2342' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:15 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '132' + x-request-id: + - 11d6c54d-b2cb-4a72-8edf-b2935dd5be71 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=140 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bald + eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bat"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=160"}' + headers: + apim-request-id: + - 4790b8d2-08c2-46ae-b3ea-cb12181e095c + content-length: + - '2339' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:15 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '121' + x-request-id: + - 4790b8d2-08c2-46ae-b3ea-cb12181e095c + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=160 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"African + elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue Atlas + Cedar","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Asp"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=180"}' + headers: + apim-request-id: + - 16bd033a-78e6-4954-b154-709536322466 + content-length: + - '2356' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:16 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '104' + x-request-id: + - 16bd033a-78e6-4954-b154-709536322466 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=180 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bali + cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard Service + Tree","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Ass + (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Arrow + crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"American + robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"American + buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bali cattle"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=200"}' + headers: + apim-request-id: + - e58673c3-87e1-4194-8a37-e59a5fb47788 + content-length: + - '2360' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:16 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '88' + x-request-id: + - e58673c3-87e1-4194-8a37-e59a5fb47788 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=200 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bison"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=220"}' + headers: + apim-request-id: + - 7191cfff-3540-496d-bce4-f13616c68318 + content-length: + - '2330' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:17 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '88' + x-request-id: + - 7191cfff-3540-496d-bce4-f13616c68318 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=220 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Albatross"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=240"}' + headers: + apim-request-id: + - 7a7890fa-a8ec-4d48-a067-b53e27fb7649 + content-length: + - '2305' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:17 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '111' + x-request-id: + - 7a7890fa-a8ec-4d48-a067-b53e27fb7649 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=240 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Arabian + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Beetle"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=260"}' + headers: + apim-request-id: + - 843f64c5-2a96-435c-b96f-c9bcc0a91911 + content-length: + - '2409' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:17 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '95' + x-request-id: + - 843f64c5-2a96-435c-b96f-c9bcc0a91911 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=260 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Black + panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Beech","Dim2":"American + buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"African + buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Armadillo"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=280"}' + headers: + apim-request-id: + - 8d762ba3-8d14-4a60-b50c-9dd476aa1595 + content-length: + - '2332' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:18 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '108' + x-request-id: + - 8d762ba3-8d14-4a60-b50c-9dd476aa1595 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=280 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Beaked + whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard Service + Tree","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Armadillo"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=300"}' + headers: + apim-request-id: + - d785956c-8bce-4582-87a6-c41143702a86 + content-length: + - '2410' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:18 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '99' + x-request-id: + - d785956c-8bce-4582-87a6-c41143702a86 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=300 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Basilisk"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=320"}' + headers: + apim-request-id: + - 5e8d7f64-5183-445f-9339-c70246b24817 + content-length: + - '2391' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:19 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '128' + x-request-id: + - 5e8d7f64-5183-445f-9339-c70246b24817 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=320 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bass"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=340"}' + headers: + apim-request-id: + - 5f948d1c-aac5-4da6-aff6-fb455fb16cbe + content-length: + - '2371' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:19 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '242' + x-request-id: + - 5f948d1c-aac5-4da6-aff6-fb455fb16cbe + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=340 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blackthorn","Dim2":"Arctic + Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese red-barked + birch","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Barnacle"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=360"}' + headers: + apim-request-id: + - 3d78b1cb-2859-4698-9350-a7ba0cd6e005 + content-length: + - '2398' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:20 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '167' + x-request-id: + - 3d78b1cb-2859-4698-9350-a7ba0cd6e005 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=360 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Fir","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Aardwolf"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=380"}' + headers: + apim-request-id: + - 9be300c5-ff5d-42ba-bf38-cc84fc3455ff + content-length: + - '2366' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:20 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '222' + x-request-id: + - 9be300c5-ff5d-42ba-bf38-cc84fc3455ff + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=380 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Angelfish"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=400"}' + headers: + apim-request-id: + - 67560ec7-6ddb-4931-b78d-1e960ffaff7a + content-length: + - '2387' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:21 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '165' + x-request-id: + - 67560ec7-6ddb-4931-b78d-1e960ffaff7a + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=400 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Animals + by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Blue + Atlas Cedar","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"African + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"American robin"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=420"}' + headers: + apim-request-id: + - 99382821-7cb2-4c61-b9e4-bb57858e1f40 + content-length: + - '2403' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:21 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '160' + x-request-id: + - 99382821-7cb2-4c61-b9e4-bb57858e1f40 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=420 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Aardvark"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=440"}' + headers: + apim-request-id: + - 18c261f0-c994-427e-824a-d3e665d6ecac + content-length: + - '2361' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:21 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '159' + x-request-id: + - 18c261f0-c994-427e-824a-d3e665d6ecac + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=440 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Beech","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bird"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=460"}' + headers: + apim-request-id: + - 5902f2a4-0544-4e86-973b-5761b90aee3c + content-length: + - '2422' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:22 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '163' + x-request-id: + - 5902f2a4-0544-4e86-973b-5761b90aee3c + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=460 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cabbage + Palm","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bear"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=480"}' + headers: + apim-request-id: + - 5615e895-6449-4f0f-9ea2-90a7804bc8ed + content-length: + - '2403' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:22 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '190' + x-request-id: + - 5615e895-6449-4f0f-9ea2-90a7804bc8ed + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=480 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"African + buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider gum","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Ass + (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Black panther"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=500"}' + headers: + apim-request-id: + - 3926eaf8-084a-4bed-a2ad-66cb8debcca3 + content-length: + - '2385' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:23 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '203' + x-request-id: + - 3926eaf8-084a-4bed-a2ad-66cb8debcca3 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=500 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Animals + by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"African + buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bird"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=520"}' + headers: + apim-request-id: + - a80854bb-a615-4e2c-96cc-e8d07f4027e0 + content-length: + - '2380' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:23 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '159' + x-request-id: + - a80854bb-a615-4e2c-96cc-e8d07f4027e0 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=520 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bovid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry + Laurel","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bedbug"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=540"}' + headers: + apim-request-id: + - a0263ee6-e0bc-43a7-b6d4-0cc8d18bf9d6 + content-length: + - '2273' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:24 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '215' + x-request-id: + - a0263ee6-e0bc-43a7-b6d4-0cc8d18bf9d6 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=540 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"American + buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Ant"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=560"}' + headers: + apim-request-id: + - 8074ccb3-d480-4b3d-b685-bd81230a5f7a + content-length: + - '2269' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:24 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '201' + x-request-id: + - 8074ccb3-d480-4b3d-b685-bd81230a5f7a + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=560 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"African + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Anglerfish"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=580"}' + headers: + apim-request-id: + - cb37c047-3ab4-4ad5-8ad4-71eb399f710b + content-length: + - '2335' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:25 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '183' + x-request-id: + - cb37c047-3ab4-4ad5-8ad4-71eb399f710b + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=580 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Animals + by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bald + eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Walnut","Dim2":"Animals + by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"African + leopard"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=600"}' + headers: + apim-request-id: + - 4ae567f5-7cc5-4f54-a1fe-60814ddb0842 + content-length: + - '2334' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:25 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '170' + x-request-id: + - 4ae567f5-7cc5-4f54-a1fe-60814ddb0842 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=600 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Animals + by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anteater"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=620"}' + headers: + apim-request-id: + - d12abd6b-2169-405b-8ba4-c559d042927d + content-length: + - '2360' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:26 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '207' + x-request-id: + - d12abd6b-2169-405b-8ba4-c559d042927d + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=620 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bald + eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Alder","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Alder","Dim2":"American + buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Boa"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blackbird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Albatross"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=640"}' + headers: + apim-request-id: + - 49bf873f-6409-436a-90d2-8961416600f3 + content-length: + - '2310' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:26 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '212' + x-request-id: + - 49bf873f-6409-436a-90d2-8961416600f3 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=640 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Bastard + Service Tree","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bobolink"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Blue bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Blue jay"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Butterfly"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bandicoot"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=660"}' + headers: + apim-request-id: + - e2c64506-3246-4868-88fe-eee0fe28adc7 + content-length: + - '2325' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:27 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '149' + x-request-id: + - e2c64506-3246-4868-88fe-eee0fe28adc7 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=660 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bald + eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Birch + (River Birch)","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"American + buffalo (bison)"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=680"}' + headers: + apim-request-id: + - 08de4098-e93c-4173-b27f-b3c7474380fc + content-length: + - '2338' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:27 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '212' + x-request-id: + - 08de4098-e93c-4173-b27f-b3c7474380fc + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=680 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"American + robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Birch + (River Birch)","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Ass + (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Blackbird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Buzzard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Armadillo"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=700"}' + headers: + apim-request-id: + - e968b2b9-de03-4b8b-84f1-18785456e9f6 + content-length: + - '2271' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:28 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '178' + x-request-id: + - e968b2b9-de03-4b8b-84f1-18785456e9f6 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=700 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"African + elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Arabian + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Hazel","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Alpaca"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=720"}' + headers: + apim-request-id: + - 864eb370-9424-49c2-8295-417ee944583b + content-length: + - '2353' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:28 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '184' + x-request-id: + - 864eb370-9424-49c2-8295-417ee944583b + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=720 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Ash","Dim2":"Bali + cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Poplar","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Arrow + crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Poplar","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Animals + by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Black + panther"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=740"}' + headers: + apim-request-id: + - 75228d6c-7b7c-4750-947b-4585f071c7dc + content-length: + - '2369' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:29 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '175' + x-request-id: + - 75228d6c-7b7c-4750-947b-4585f071c7dc + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=740 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Black + panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Animals + by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Hazel","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Birch + (River Birch)","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bali + cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"African + elephant"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=760"}' + headers: + apim-request-id: + - 1bc98b60-2b62-417a-9752-bbb308f7dc53 + content-length: + - '2271' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:29 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '161' + x-request-id: + - 1bc98b60-2b62-417a-9752-bbb308f7dc53 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=760 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Box jellyfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bee"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=780"}' + headers: + apim-request-id: + - d6839c03-5362-4215-b2c1-cf4f53fb3df8 + content-length: + - '2343' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:29 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '186' + x-request-id: + - d6839c03-5362-4215-b2c1-cf4f53fb3df8 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=780 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"American + robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Ash","Dim2":"Arrow + crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian Lime","Dim2":"Bali + cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"American + robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese red-barked + birch","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Armadillo"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=800"}' + headers: + apim-request-id: + - a719dec4-35f0-4556-a7f1-314a9164359a + content-length: + - '2280' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:30 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '155' + x-request-id: + - a719dec4-35f0-4556-a7f1-314a9164359a + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=800 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Chinese + red-barked birch","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Canidae"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"African + elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bali + cattle"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=820"}' + headers: + apim-request-id: + - fa998f17-4405-4dcf-afd6-dbff7c78c71d + content-length: + - '2329' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:30 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '162' + x-request-id: + - fa998f17-4405-4dcf-afd6-dbff7c78c71d + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=820 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Buffalo, American (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Arrow + crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bison"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=840"}' + headers: + apim-request-id: + - 4b082a05-cad2-447d-b16c-74e0ef2069b7 + content-length: + - '2347' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:31 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '173' + x-request-id: + - 4b082a05-cad2-447d-b16c-74e0ef2069b7 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=840 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bovid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beaver"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=860"}' + headers: + apim-request-id: + - 458304a2-f861-4b04-ad90-f8562da0189f + content-length: + - '2334' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:31 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '142' + x-request-id: + - 458304a2-f861-4b04-ad90-f8562da0189f + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=860 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Baboon"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=880"}' + headers: + apim-request-id: + - 8c486774-4fc2-46eb-bdd3-34813e3c30f7 + content-length: + - '2282' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:32 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '164' + x-request-id: + - 8c486774-4fc2-46eb-bdd3-34813e3c30f7 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=880 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Ass + (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Poplar","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Poplar","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Camel"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Arrow + crab"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=900"}' + headers: + apim-request-id: + - 34a837c4-35bf-46e1-b170-f7762d489f44 + content-length: + - '2285' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:32 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '183' + x-request-id: + - 34a837c4-35bf-46e1-b170-f7762d489f44 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=900 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Black + panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Poplar","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Capybara"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Poplar","Dim2":"Animals + by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Canid"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=920"}' + headers: + apim-request-id: + - 1ef02f30-11ce-4bfc-ba63-8887f204d81c + content-length: + - '2310' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:33 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '467' + x-request-id: + - 1ef02f30-11ce-4bfc-ba63-8887f204d81c + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=920 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Arabian + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Austrian + Pine","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Carp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cider + gum","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Cape buffalo"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=940"}' + headers: + apim-request-id: + - b83d6f6c-fcd6-46ef-a507-bb8c681e8a08 + content-length: + - '2299' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:33 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '151' + x-request-id: + - b83d6f6c-fcd6-46ef-a507-bb8c681e8a08 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=940 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Beaked + whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Lime","Dim2":"Caterpillar"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bali + cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Poplar","Dim2":"Bali + cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Birch + (River Birch)","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Baboon"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=960"}' + headers: + apim-request-id: + - 1c62e618-d8e4-4986-9418-11bf886058ca + content-length: + - '2303' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:34 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '190' + x-request-id: + - 1c62e618-d8e4-4986-9418-11bf886058ca + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=960 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Cat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Baboon"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=980"}' + headers: + apim-request-id: + - da22270d-fab5-4be8-b426-6448a18f07e8 + content-length: + - '2308' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:34 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '179' + x-request-id: + - da22270d-fab5-4be8-b426-6448a18f07e8 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=980 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Arabian + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"American + buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Beaked whale"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1000"}' + headers: + apim-request-id: + - da3b7a7f-95e5-4d26-a0cd-ae35a7c48d38 + content-length: + - '2309' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:35 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '183' + x-request-id: + - da3b7a7f-95e5-4d26-a0cd-ae35a7c48d38 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1000 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Black widow spider"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Arctic + Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Beaked + whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Juniper","Dim2":"African + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Asp"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1020"}' + headers: + apim-request-id: + - 551b125d-0d5e-4f86-ba1b-1297496f02c7 + content-length: + - '2372' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:35 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '182' + x-request-id: + - 551b125d-0d5e-4f86-ba1b-1297496f02c7 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1020 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Arctic + Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian Lime","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cherry","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Almond","Dim2":"Arctic + Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Birch + (River Birch)","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Caucasian + Lime","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Beaked + whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Birch","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bonobo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue bird"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1040"}' + headers: + apim-request-id: + - acd24768-527e-477f-b350-ad61ab05505d + content-length: + - '2323' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:36 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '214' + x-request-id: + - acd24768-527e-477f-b350-ad61ab05505d + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1040 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cotoneaster","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Buffalo, African"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Canidae"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Buzzard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Basilisk"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1060"}' + headers: + apim-request-id: + - b398883d-42ca-4d7a-99a0-be3ae2bcce02 + content-length: + - '2326' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:36 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '178' + x-request-id: + - b398883d-42ca-4d7a-99a0-be3ae2bcce02 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1060 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue jay"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Caribou"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Cardinal"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Blue whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Blue whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Animals by number of neurons"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1080"}' + headers: + apim-request-id: + - 692a0b58-6117-4e81-ba7a-b09005f56289 + content-length: + - '2339' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:37 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '247' + x-request-id: + - 692a0b58-6117-4e81-ba7a-b09005f56289 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1080 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Cardinal"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Ant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Catfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"African + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black Mulberry","Dim2":"African + buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Juniper","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"American + robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian Fir","Dim2":"Basilisk"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1100"}' + headers: + apim-request-id: + - fea6fa95-b23c-431e-9c55-347ac1a919f3 + content-length: + - '2317' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:37 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '619' + x-request-id: + - fea6fa95-b23c-431e-9c55-347ac1a919f3 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1100 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Capybara"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Booby"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bobcat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Centipede"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Catfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Antlion"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1120"}' + headers: + apim-request-id: + - 2b0d4f3f-188b-4083-a24e-afd42dcf0a4a + content-length: + - '2314' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:38 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '375' + x-request-id: + - 2b0d4f3f-188b-4083-a24e-afd42dcf0a4a + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1120 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Butterfly"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Booby"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bobolink"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bedbug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Cheetah"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Ant"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1140"}' + headers: + apim-request-id: + - ecc79f2d-2f8f-468a-8ade-3ba4b4345d89 + content-length: + - '2341' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:39 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '241' + x-request-id: + - ecc79f2d-2f8f-468a-8ade-3ba4b4345d89 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1140 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Boar"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bear"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Chameleon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Caribou"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1160"}' + headers: + apim-request-id: + - 019aa6f6-63e4-4a3b-b0aa-d5c7d93184d3 + content-length: + - '2331' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:39 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '227' + x-request-id: + - 019aa6f6-63e4-4a3b-b0aa-d5c7d93184d3 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1160 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Beaver"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Bali + cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Alder","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Antlion"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Anglerfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"African elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"African elephant"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1180"}' + headers: + apim-request-id: + - b2c67d8c-31e7-4b34-bcfd-4c6ab703e3b8 + content-length: + - '2352' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:40 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '168' + x-request-id: + - b2c67d8c-31e7-4b34-bcfd-4c6ab703e3b8 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1180 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bobcat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Birch (River Birch)","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Box jellyfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Centipede"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Arctic + Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common Lime","Dim2":"Buffalo, + African"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"American buffalo (bison)"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1200"}' + headers: + apim-request-id: + - f58b6a49-c41d-467c-9696-55aedc075456 + content-length: + - '2329' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:40 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '143' + x-request-id: + - f58b6a49-c41d-467c-9696-55aedc075456 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1200 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Ash","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"American + buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Baboon"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Bee"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bison"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Barnacle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Badger"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Bug"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Beetle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Alder","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"American robin"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1220"}' + headers: + apim-request-id: + - ddf41a5f-e618-442b-bc11-cc3276cce3f3 + content-length: + - '2310' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:40 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '175' + x-request-id: + - ddf41a5f-e618-442b-bc11-cc3276cce3f3 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1220 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Arabian leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"African leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Aphid"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Walnut","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Bonobo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Boa"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Beaked whale"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Black widow spider"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Asp"}},{"metricId":"metric_id","dimension":{"dimension_name":"Box + elder","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Animals by size"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Aardvark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bass"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Beaver"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1240"}' + headers: + apim-request-id: + - 80a47417-165b-4cec-8b42-323b53a97c2f + content-length: + - '2329' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:42 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '157' + x-request-id: + - 80a47417-165b-4cec-8b42-323b53a97c2f + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1240 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"African buffalo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"American buffalo (bison)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Aardwolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Anteater"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Antelope"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Anaconda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Black panther"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Cephalopod"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Barracuda"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Ape"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Arabian + leopard"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Boar"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1260"}' + headers: + apim-request-id: + - af8b4f9e-7de3-4f29-b242-f44e9fd6fc12 + content-length: + - '2334' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:42 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '124' + x-request-id: + - af8b4f9e-7de3-4f29-b242-f44e9fd6fc12 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1260 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bali cattle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Copper + Beech","Dim2":"Bird"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Hazel","Dim2":"Angelfish"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Alpaca"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Armadillo"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Poplar","Dim2":"Arctic Wolf"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Lime","Dim2":"Catshark"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"American robin"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Yew","Dim2":"Amphibian"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Albatross"}},{"metricId":"metric_id","dimension":{"dimension_name":"Cockspur + Thorn","Dim2":"Ass (donkey)"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Animals by number of neurons"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Alligator"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Beetle"}}],"@nextLink":"https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1280"}' + headers: + apim-request-id: + - 6c8d6f67-682f-4892-8a17-15d99282fa54 + content-length: + - '2382' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:43 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '165' + x-request-id: + - 6c8d6f67-682f-4892-8a17-15d99282fa54 + status: + code: 200 + message: OK +- request: + body: '{"activeSince": "2020-01-01T00:00:00.000Z"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/series/query?$top=20&$skip=1280 + response: + body: + string: '{"value":[{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Basilisk"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"African + elephant"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Arrow crab"}},{"metricId":"metric_id","dimension":{"dimension_name":"Algerian + Fir","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bald eagle"}},{"metricId":"metric_id","dimension":{"dimension_name":"Aspen","Dim2":"Bandicoot"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Arctic Fox"}},{"metricId":"metric_id","dimension":{"dimension_name":"Black + Mulberry","Dim2":"Bat"}},{"metricId":"metric_id","dimension":{"dimension_name":"Common + Juniper","Dim2":"Bee"}}],"@nextLink":null}' + headers: + apim-request-id: + - d2a1a25e-a507-4115-a5ca-cfa958efb879 + content-length: + - '985' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:43 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '167' + x-request-id: + - d2a1a25e-a507-4115-a5ca-cfa958efb879 + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_metrics_series_data.yaml b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_metrics_series_data.yaml new file mode 100644 index 000000000000..ecfb08a9235a --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/recordings/test_metrics_advisor_client_live.test_list_metrics_series_data.yaml @@ -0,0 +1,44 @@ +interactions: +- request: + body: '{"startTime": "2020-01-01T00:00:00.000Z", "endTime": "2020-09-09T00:00:00.000Z", + "series": [{"city": "Mumbai", "category": "Shoes Handbags & Sunglasses"}]}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + Content-Length: + - '155' + Content-Type: + - application/json + User-Agent: + - azsdk-python-ai-metricsadvisor/1.0.0b1 Python/3.8.5 (Windows-10-10.0.19041-SP0) + method: POST + uri: https://anuchan-cg-metric-advisor.cognitiveservices.azure.com/metricsadvisor/v1.0/metrics/metric_id/data/query + response: + body: + string: '{"value":[{"id":{"metricId":"metric_id","dimension":{"city":"Mumbai","category":"Shoes + Handbags & Sunglasses"}},"timestampList":[],"valueList":[]}]}' + headers: + apim-request-id: + - a0494a9a-bb01-4f77-800b-1f72315c6f2e + content-length: + - '175' + content-type: + - application/json; charset=utf-8 + date: + - Mon, 21 Sep 2020 16:54:44 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + x-content-type-options: + - nosniff + x-envoy-upstream-service-time: + - '370' + x-request-id: + - a0494a9a-bb01-4f77-800b-1f72315c6f2e + status: + code: 200 + message: OK +version: 1 diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_anomaly_alert_config.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_anomaly_alert_config.py new file mode 100644 index 000000000000..5334bf465546 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_anomaly_alert_config.py @@ -0,0 +1,1060 @@ +# coding=utf-8 +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +import pytest +from azure.core.exceptions import ResourceNotFoundError + +from azure.ai.metricsadvisor.models import ( + MetricAlertConfiguration, + MetricAnomalyAlertScope, + MetricAnomalyAlertConditions, + MetricBoundaryCondition, + TopNGroupScope, + SeverityCondition, + MetricAnomalyAlertSnoozeCondition +) +from base_testcase import TestMetricsAdvisorAdministrationClientBase + + +class TestMetricsAdvisorAdministrationClient(TestMetricsAdvisorAdministrationClientBase): + + def test_create_anomaly_alert_config_top_n_alert_direction_both(self): + + detection_config, data_feed = self._create_data_feed_and_anomaly_detection_config("topnup") + alert_config_name = self.create_random_name("testalert") + try: + alert_config = self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + upper=5.0 + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "TopN") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.min_top_count, 9) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.period, 10) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.top, 5) + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper, 5.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower, 1.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_anomaly_alert_config_top_n_alert_direction_down(self): + + detection_config, data_feed = self._create_data_feed_and_anomaly_detection_config("topnup") + alert_config_name = self.create_random_name("testalert") + try: + alert_config = self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Down", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "TopN") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.min_top_count, 9) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.period, 10) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.top, 5) + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Down") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower, 1.0) + self.assertIsNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper) + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_anomaly_alert_config_top_n_alert_direction_up(self): + + detection_config, data_feed = self._create_data_feed_and_anomaly_detection_config("topnup") + alert_config_name = self.create_random_name("testalert") + try: + alert_config = self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Up", + companion_metric_id=data_feed.metric_ids[0], + upper=5.0, + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "TopN") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.min_top_count, 9) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.period, 10) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.top, 5) + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Up") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper, 5.0) + self.assertIsNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower) + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_anomaly_alert_config_top_n_severity_condition(self): + + detection_config, data_feed = self._create_data_feed_and_anomaly_detection_config("topnup") + alert_config_name = self.create_random_name("testalert") + try: + alert_config = self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "TopN") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.min_top_count, 9) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.period, 10) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.top, 5) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition.max_alert_severity, "High") + + self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_anomaly_alert_config_snooze_condition(self): + + detection_config, data_feed = self._create_data_feed_and_anomaly_detection_config("topnup") + alert_config_name = self.create_random_name("testalert") + try: + alert_config = self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_snooze_condition=MetricAnomalyAlertSnoozeCondition( + auto_snooze=5, + snooze_scope="Metric", + only_for_successive=True + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "TopN") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.min_top_count, 9) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.period, 10) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.top, 5) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_snooze_condition.auto_snooze, 5) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_snooze_condition.snooze_scope, "Metric") + self.assertTrue( + alert_config.metric_alert_configurations[0].alert_snooze_condition.only_for_successive) + self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_anomaly_alert_config_whole_series_alert_direction_both(self): + + detection_config, data_feed = self._create_data_feed_and_anomaly_detection_config("wholeseries") + alert_config_name = self.create_random_name("testalert") + try: + alert_config = self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries", + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + upper=5.0 + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "WholeSeries") + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper, 5.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower, 1.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_anomaly_alert_config_whole_series_alert_direction_down(self): + + detection_config, data_feed = self._create_data_feed_and_anomaly_detection_config("wholeseries") + alert_config_name = self.create_random_name("testalert") + try: + alert_config = self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Down", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "WholeSeries") + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Down") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower, 1.0) + self.assertIsNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper) + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_anomaly_alert_config_whole_series_alert_direction_up(self): + + detection_config, data_feed = self._create_data_feed_and_anomaly_detection_config("wholeseries") + alert_config_name = self.create_random_name("testalert") + try: + alert_config = self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Up", + companion_metric_id=data_feed.metric_ids[0], + upper=5.0, + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "WholeSeries") + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Up") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper, 5.0) + self.assertIsNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower) + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_anomaly_alert_config_whole_series_severity_condition(self): + + detection_config, data_feed = self._create_data_feed_and_anomaly_detection_config("topnup") + alert_config_name = self.create_random_name("testalert") + try: + alert_config = self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "WholeSeries") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition.max_alert_severity, "High") + + self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_anomaly_alert_config_series_group_alert_direction_both(self): + + detection_config, data_feed = self._create_data_feed_and_anomaly_detection_config("seriesgroup") + alert_config_name = self.create_random_name("testalert") + try: + alert_config = self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + upper=5.0 + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "SeriesGroup") + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.series_group_in_scope, {'city': 'Shenzhen'}) + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper, 5.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower, 1.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_anomaly_alert_config_series_group_alert_direction_down(self): + + detection_config, data_feed = self._create_data_feed_and_anomaly_detection_config("seriesgroup") + alert_config_name = self.create_random_name("testalert") + try: + alert_config = self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Down", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "SeriesGroup") + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.series_group_in_scope, {'city': 'Shenzhen'}) + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Down") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower, 1.0) + self.assertIsNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper) + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_anomaly_alert_config_series_group_alert_direction_up(self): + + detection_config, data_feed = self._create_data_feed_and_anomaly_detection_config("seriesgroup") + alert_config_name = self.create_random_name("testalert") + try: + alert_config = self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Up", + companion_metric_id=data_feed.metric_ids[0], + upper=5.0, + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "SeriesGroup") + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.series_group_in_scope, {'city': 'Shenzhen'}) + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Up") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper, 5.0) + self.assertIsNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower) + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + + self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_anomaly_alert_config_series_group_severity_condition(self): + + detection_config, data_feed = self._create_data_feed_and_anomaly_detection_config("seriesgroupsev") + alert_config_name = self.create_random_name("testalert") + try: + alert_config = self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ) + ], + hook_ids=[] + ) + self.assertIsNone(alert_config.cross_metrics_operator) + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 1) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "SeriesGroup") + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.series_group_in_scope, {'city': 'Shenzhen'}) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition.max_alert_severity, "High") + + self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_anomaly_alert_config_multiple_configurations(self): + + detection_config, data_feed = self._create_data_feed_and_anomaly_detection_config("multiple") + alert_config_name = self.create_random_name("testalert") + try: + alert_config = self.admin_client.create_anomaly_alert_configuration( + name=alert_config_name, + cross_metrics_operator="AND", + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + upper=5.0 + ) + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ) + ) + ) + ], + hook_ids=[] + ) + self.assertEqual(alert_config.cross_metrics_operator, "AND") + self.assertIsNotNone(alert_config.id) + self.assertIsNotNone(alert_config.name) + self.assertEqual(len(alert_config.metric_alert_configurations), 3) + self.assertIsNotNone(alert_config.metric_alert_configurations[0].detection_configuration_id) + self.assertFalse(alert_config.metric_alert_configurations[0].use_detection_result_to_filter_anomalies) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.scope_type, "TopN") + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.min_top_count, 9) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.period, 10) + self.assertEqual(alert_config.metric_alert_configurations[0].alert_scope.top_n_group_in_scope.top, 5) + self.assertIsNotNone( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.companion_metric_id) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.upper, 5.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.lower, 1.0) + self.assertEqual( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertFalse( + alert_config.metric_alert_configurations[0].alert_conditions.metric_boundary_condition.trigger_for_missing) + self.assertEqual(alert_config.metric_alert_configurations[1].alert_scope.scope_type, "SeriesGroup") + self.assertEqual( + alert_config.metric_alert_configurations[1].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual( + alert_config.metric_alert_configurations[1].alert_conditions.severity_condition.max_alert_severity, "High") + self.assertEqual(alert_config.metric_alert_configurations[2].alert_scope.scope_type, "WholeSeries") + self.assertEqual( + alert_config.metric_alert_configurations[2].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual( + alert_config.metric_alert_configurations[2].alert_conditions.severity_condition.max_alert_severity, "High") + + self.admin_client.delete_anomaly_alert_configuration(alert_config.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_anomaly_alert_configuration(alert_config.id) + + finally: + self.admin_client.delete_metric_anomaly_detection_configuration(detection_config.id) + self.admin_client.delete_data_feed(data_feed.id) + + def test_list_anomaly_alert_configs(self): + + configs = self.admin_client.list_anomaly_alert_configurations( + detection_configuration_id=self.anomaly_detection_configuration_id + ) + assert len(list(configs)) > 0 + + def test_update_anomaly_alert_config_with_model(self): + try: + alert_config, data_feed, _ = self._create_anomaly_alert_config_for_update("alertupdate") + + alert_config.name = "update" + alert_config.description = "update description" + alert_config.cross_metrics_operator = "OR" + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition = \ + SeverityCondition(max_alert_severity="High", min_alert_severity="Low") + alert_config.metric_alert_configurations[1].alert_conditions.metric_boundary_condition = \ + MetricBoundaryCondition( + direction="Both", + upper=5, + lower=1 + ) + alert_config.metric_alert_configurations[2].alert_conditions.metric_boundary_condition = \ + MetricBoundaryCondition( + direction="Both", + upper=5, + lower=1 + ) + + updated = self.admin_client.update_anomaly_alert_configuration(alert_config) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "update description") + self.assertEqual(updated.cross_metrics_operator, "OR") + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.severity_condition.max_alert_severity, "High") + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.upper, 5) + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.lower, 1) + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.upper, 5) + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.lower, 1) + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_update_anomaly_alert_config_with_kwargs(self): + try: + alert_config, data_feed, detection_config = self._create_anomaly_alert_config_for_update("alertupdate") + updated = self.admin_client.update_anomaly_alert_configuration( + alert_config.id, + name="update", + description="update description", + cross_metrics_operator="OR", + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + upper=5.0 + ), + severity_condition=SeverityCondition(max_alert_severity="High", min_alert_severity="Low") + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ), + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + upper=5, + lower=1 + ) + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ), + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + upper=5, + lower=1 + ) + ) + ) + ] + ) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "update description") + self.assertEqual(updated.cross_metrics_operator, "OR") + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.severity_condition.max_alert_severity, "High") + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.upper, 5) + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.lower, 1) + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.upper, 5) + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.lower, 1) + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_update_anomaly_alert_config_with_model_and_kwargs(self): + try: + alert_config, data_feed, detection_config = self._create_anomaly_alert_config_for_update("alertupdate") + + alert_config.name = "updateMe" + alert_config.description = "updateMe" + alert_config.cross_metrics_operator = "don't update me" + alert_config.metric_alert_configurations[0].alert_conditions.severity_condition = None + alert_config.metric_alert_configurations[1].alert_conditions.metric_boundary_condition = None + alert_config.metric_alert_configurations[2].alert_conditions.metric_boundary_condition = None + + updated = self.admin_client.update_anomaly_alert_configuration( + alert_config, + cross_metrics_operator="OR", + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=MetricAnomalyAlertConditions( + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + companion_metric_id=data_feed.metric_ids[0], + lower=1.0, + upper=5.0 + ), + severity_condition=SeverityCondition(max_alert_severity="High", min_alert_severity="Low") + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="SeriesGroup", + series_group_in_scope={'city': 'Shenzhen'} + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ), + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + upper=5, + lower=1 + ) + ) + ), + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="WholeSeries" + ), + alert_conditions=MetricAnomalyAlertConditions( + severity_condition=SeverityCondition( + min_alert_severity="Low", + max_alert_severity="High" + ), + metric_boundary_condition=MetricBoundaryCondition( + direction="Both", + upper=5, + lower=1 + ) + ) + ) + ] + ) + + self.assertEqual(updated.name, "updateMe") + self.assertEqual(updated.description, "updateMe") + self.assertEqual(updated.cross_metrics_operator, "OR") + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.severity_condition.max_alert_severity, "High") + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.severity_condition.min_alert_severity, "Low") + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.upper, 5) + self.assertEqual(updated.metric_alert_configurations[1].alert_conditions.metric_boundary_condition.lower, 1) + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.direction, "Both") + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.upper, 5) + self.assertEqual(updated.metric_alert_configurations[2].alert_conditions.metric_boundary_condition.lower, 1) + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_update_anomaly_alert_by_resetting_properties(self): + try: + alert_config, data_feed, detection_config = self._create_anomaly_alert_config_for_update("alertupdate") + updated = self.admin_client.update_anomaly_alert_configuration( + alert_config.id, + name="reset", + description="", # can't pass None currently, bug says description is required + metric_alert_configurations=[ + MetricAlertConfiguration( + detection_configuration_id=detection_config.id, + alert_scope=MetricAnomalyAlertScope( + scope_type="TopN", + top_n_group_in_scope=TopNGroupScope( + top=5, + period=10, + min_top_count=9 + ) + ), + alert_conditions=None + ) + ] + ) + + self.assertEqual(updated.name, "reset") + self.assertEqual(updated.description, "") + self.assertEqual(updated.cross_metrics_operator, None) + self.assertEqual(len(updated.metric_alert_configurations), 1) + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.severity_condition, None) + self.assertEqual(updated.metric_alert_configurations[0].alert_conditions.metric_boundary_condition, None) + + finally: + self.admin_client.delete_data_feed(data_feed.id) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_data_feed_ingestion.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_data_feed_ingestion.py new file mode 100644 index 000000000000..03a89b951f83 --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_data_feed_ingestion.py @@ -0,0 +1,57 @@ +# coding=utf-8 +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +import datetime +from dateutil.tz import tzutc +import pytest +from base_testcase import TestMetricsAdvisorAdministrationClientBase + + +class TestMetricsAdvisorAdministrationClient(TestMetricsAdvisorAdministrationClientBase): + + def test_get_data_feed_ingestion_progress(self): + + ingestion = self.admin_client.get_data_feed_ingestion_progress( + data_feed_id=self.data_feed_id + ) + self.assertIsNotNone(ingestion.latest_success_timestamp) + self.assertIsNotNone(ingestion.latest_active_timestamp) + + def test_list_data_feed_ingestion_status(self): + + ingestions = self.admin_client.list_data_feed_ingestion_status( + data_feed_id=self.data_feed_id, + start_time=datetime.datetime(2020, 8, 9, tzinfo=tzutc()), + end_time=datetime.datetime(2020, 9, 16, tzinfo=tzutc()), + ) + assert len(list(ingestions)) > 0 + + def test_list_data_feed_ingestion_status_with_skip(self): + + ingestions = self.admin_client.list_data_feed_ingestion_status( + data_feed_id=self.data_feed_id, + start_time=datetime.datetime(2020, 8, 9, tzinfo=tzutc()), + end_time=datetime.datetime(2020, 9, 16, tzinfo=tzutc()), + ) + + ingestions_with_skips = self.admin_client.list_data_feed_ingestion_status( + data_feed_id=self.data_feed_id, + start_time=datetime.datetime(2020, 8, 9, tzinfo=tzutc()), + end_time=datetime.datetime(2020, 9, 16, tzinfo=tzutc()), + skip=5 + ) + ingestions_list = list(ingestions) + ingestions_with_skips_list = list(ingestions_with_skips) + assert len(ingestions_list) == len(ingestions_with_skips_list) + 5 + + def test_refresh_data_feed_ingestion(self): + self.admin_client.refresh_data_feed_ingestion( + self.data_feed_id, + start_time=datetime.datetime(2019, 10, 1, tzinfo=tzutc()), + end_time=datetime.datetime(2020, 10, 3, tzinfo=tzutc()), + ) + diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_data_feeds.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_data_feeds.py new file mode 100644 index 000000000000..4eaf5c20f1fd --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_data_feeds.py @@ -0,0 +1,1028 @@ +# coding=utf-8 +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +import datetime +from dateutil.tz import tzutc +import pytest +from azure.core.exceptions import ResourceNotFoundError + +from azure.ai.metricsadvisor.models import ( + SQLServerDataFeed, + AzureTableDataFeed, + AzureBlobDataFeed, + AzureCosmosDBDataFeed, + HttpRequestDataFeed, + Metric, + Dimension, + DataFeedSchema, + DataFeedIngestionSettings, + DataFeedGranularity, + DataFeedOptions, + DataFeedMissingDataPointFillSettings, + DataFeedRollupSettings, + AzureApplicationInsightsDataFeed, + AzureDataExplorerDataFeed, + InfluxDBDataFeed, + AzureDataLakeStorageGen2DataFeed, + MongoDBDataFeed, + MySqlDataFeed, + PostgreSqlDataFeed, + ElasticsearchDataFeed +) +from base_testcase import TestMetricsAdvisorAdministrationClientBase + + +class TestMetricsAdvisorAdministrationClient(TestMetricsAdvisorAdministrationClientBase): + + def test_create_simple_data_feed(self): + data_feed_name = self.create_random_name("testfeed") + try: + data_feed = self.admin_client.create_data_feed( + name=data_feed_name, + source=SQLServerDataFeed( + connection_string=self.sql_server_connection_string, + query="select * from adsample2 where Timestamp = @StartTime" + ), + granularity="Daily", + schema=["cost", "revenue"], + ingestion_settings=datetime.datetime(2019, 10, 1) + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "SqlServer") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertIsNotNone(data_feed.source.query) + self.assertEqual(data_feed.granularity.granularity_type, "Daily") + self.assertEqual(data_feed.schema.metrics[0].name, "cost") + self.assertEqual(data_feed.schema.metrics[1].name, "revenue") + self.assertEqual(data_feed.ingestion_settings.ingestion_begin_time, + datetime.datetime(2019, 10, 1, tzinfo=tzutc())) + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_data_feed_from_sql_server(self): + + data_feed_name = self.create_random_name("testfeed") + try: + data_feed = self.admin_client.create_data_feed( + name=data_feed_name, + source=SQLServerDataFeed( + connection_string=self.sql_server_connection_string, + query=u"select * from adsample2 where Timestamp = @StartTime" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost", display_name="display cost", description="the cost"), + Metric(name="revenue", display_name="display revenue", description="the revenue") + ], + dimensions=[ + Dimension(name="category", display_name="display category"), + Dimension(name="city", display_name="display city") + ], + timestamp_column="Timestamp" + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + data_source_request_concurrency=0, + ingestion_retry_delay=-1, + ingestion_start_offset=-1, + stop_retry_after=-1, + ), + options=DataFeedOptions( + admins=["yournamehere@microsoft.com"], + data_feed_description="my first data feed", + missing_data_point_fill_settings=DataFeedMissingDataPointFillSettings( + fill_type="SmartFilling" + ), + rollup_settings=DataFeedRollupSettings( + rollup_type="NoRollup", + rollup_method="None", + ), + viewers=["viewers"], + access_mode="Private", + action_link_template="action link template" + ) + + ) + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "SqlServer") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertIsNotNone(data_feed.source.query) + self.assertEqual(data_feed.granularity.granularity_type, "Daily") + self.assertEqual(data_feed.granularity.custom_granularity_value, None) + self.assertEqual(data_feed.schema.metrics[0].name, "cost") + self.assertEqual(data_feed.schema.metrics[1].name, "revenue") + self.assertEqual(data_feed.schema.metrics[0].display_name, "display cost") + self.assertEqual(data_feed.schema.metrics[1].display_name, "display revenue") + self.assertEqual(data_feed.schema.metrics[0].description, "the cost") + self.assertEqual(data_feed.schema.metrics[1].description, "the revenue") + self.assertEqual(data_feed.schema.dimensions[0].name, "category") + self.assertEqual(data_feed.schema.dimensions[1].name, "city") + self.assertEqual(data_feed.schema.dimensions[0].display_name, "display category") + self.assertEqual(data_feed.schema.dimensions[1].display_name, "display city") + self.assertEqual(data_feed.ingestion_settings.ingestion_begin_time, + datetime.datetime(2019, 10, 1, tzinfo=tzutc())) + self.assertEqual(data_feed.ingestion_settings.data_source_request_concurrency, 0) + self.assertEqual(data_feed.ingestion_settings.ingestion_retry_delay, -1) + self.assertEqual(data_feed.ingestion_settings.ingestion_start_offset, -1) + self.assertEqual(data_feed.ingestion_settings.stop_retry_after, -1) + self.assertIn("yournamehere@microsoft.com", data_feed.options.admins) + self.assertEqual(data_feed.options.data_feed_description, "my first data feed") + self.assertEqual(data_feed.options.missing_data_point_fill_settings.fill_type, "SmartFilling") + self.assertEqual(data_feed.options.rollup_settings.rollup_type, "NoRollup") + self.assertEqual(data_feed.options.rollup_settings.rollup_method, "None") + self.assertEqual(data_feed.options.viewers, ["viewers"]) + self.assertEqual(data_feed.options.access_mode, "Private") + self.assertEqual(data_feed.options.action_link_template, "action link template") + self.assertEqual(data_feed.status, "Active") + self.assertTrue(data_feed.is_admin) + self.assertIsNotNone(data_feed.metric_ids) + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_data_feed(data_feed.id) + + def test_create_data_feed_from_sql_server_with_custom_values(self): + + data_feed_name = self.create_random_name("testfeed") + try: + data_feed = self.admin_client.create_data_feed( + name=data_feed_name, + source=SQLServerDataFeed( + connection_string=self.sql_server_connection_string, + query=u"select * from adsample2 where Timestamp = @StartTime" + ), + granularity=DataFeedGranularity( + granularity_type="Custom", + custom_granularity_value=20 + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost", display_name="display cost", description="the cost"), + Metric(name="revenue", display_name="display revenue", description="the revenue") + ], + dimensions=[ + Dimension(name="category", display_name="display category"), + Dimension(name="city", display_name="display city") + ], + timestamp_column="Timestamp" + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + data_source_request_concurrency=0, + ingestion_retry_delay=-1, + ingestion_start_offset=-1, + stop_retry_after=-1, + ), + options=DataFeedOptions( + admins=["yournamehere@microsoft.com"], + data_feed_description="my first data feed", + missing_data_point_fill_settings=DataFeedMissingDataPointFillSettings( + fill_type="CustomValue", + custom_fill_value=10 + ), + rollup_settings=DataFeedRollupSettings( + rollup_type="AlreadyRollup", + rollup_method="Sum", + rollup_identification_value="sumrollup" + ), + viewers=["viewers"], + access_mode="Private", + action_link_template="action link template" + ) + + ) + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "SqlServer") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertIsNotNone(data_feed.source.query) + self.assertEqual(data_feed.granularity.granularity_type, "Custom") + self.assertEqual(data_feed.granularity.custom_granularity_value, 20) + self.assertEqual(data_feed.schema.metrics[0].name, "cost") + self.assertEqual(data_feed.schema.metrics[1].name, "revenue") + self.assertEqual(data_feed.schema.metrics[0].display_name, "display cost") + self.assertEqual(data_feed.schema.metrics[1].display_name, "display revenue") + self.assertEqual(data_feed.schema.metrics[0].description, "the cost") + self.assertEqual(data_feed.schema.metrics[1].description, "the revenue") + self.assertEqual(data_feed.schema.dimensions[0].name, "category") + self.assertEqual(data_feed.schema.dimensions[1].name, "city") + self.assertEqual(data_feed.schema.dimensions[0].display_name, "display category") + self.assertEqual(data_feed.schema.dimensions[1].display_name, "display city") + self.assertEqual(data_feed.ingestion_settings.ingestion_begin_time, + datetime.datetime(2019, 10, 1, tzinfo=tzutc())) + self.assertEqual(data_feed.ingestion_settings.data_source_request_concurrency, 0) + self.assertEqual(data_feed.ingestion_settings.ingestion_retry_delay, -1) + self.assertEqual(data_feed.ingestion_settings.ingestion_start_offset, -1) + self.assertEqual(data_feed.ingestion_settings.stop_retry_after, -1) + self.assertIn("yournamehere@microsoft.com", data_feed.options.admins) + self.assertEqual(data_feed.options.data_feed_description, "my first data feed") + self.assertEqual(data_feed.options.missing_data_point_fill_settings.fill_type, "CustomValue") + self.assertEqual(data_feed.options.missing_data_point_fill_settings.custom_fill_value, 10) + self.assertEqual(data_feed.options.rollup_settings.rollup_type, "AlreadyRollup") + self.assertEqual(data_feed.options.rollup_settings.rollup_method, "Sum") + self.assertEqual(data_feed.options.rollup_settings.rollup_identification_value, "sumrollup") + self.assertEqual(data_feed.options.viewers, ["viewers"]) + self.assertEqual(data_feed.options.access_mode, "Private") + self.assertEqual(data_feed.options.action_link_template, "action link template") + self.assertEqual(data_feed.status, "Active") + self.assertTrue(data_feed.is_admin) + self.assertIsNotNone(data_feed.metric_ids) + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_data_feed(data_feed.id) + + def test_create_data_feed_with_azure_table(self): + name = self.create_random_name("tablefeed") + try: + data_feed = self.admin_client.create_data_feed( + name=name, + source=AzureTableDataFeed( + connection_string=self.azure_table_connection_string, + query="PartitionKey ge '@StartTime' and PartitionKey lt '@EndTime'", + table="adsample" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "AzureTable") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertEqual(data_feed.source.table, "adsample") + self.assertEqual(data_feed.source.query, "PartitionKey ge '@StartTime' and PartitionKey lt '@EndTime'") + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_data_feed_with_azure_blob(self): + name = self.create_random_name("blobfeed") + try: + data_feed = self.admin_client.create_data_feed( + name=name, + source=AzureBlobDataFeed( + connection_string=self.azure_blob_connection_string, + container="adsample", + blob_template="%Y/%m/%d/%h/JsonFormatV2.json" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "AzureBlob") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertEqual(data_feed.source.container, "adsample") + self.assertEqual(data_feed.source.blob_template, "%Y/%m/%d/%h/JsonFormatV2.json") + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_data_feed_with_azure_cosmos_db(self): + name = self.create_random_name("cosmosfeed") + try: + data_feed = self.admin_client.create_data_feed( + name=name, + source=AzureCosmosDBDataFeed( + connection_string=self.azure_cosmosdb_connection_string, + sql_query="'SELECT * FROM Items I where I.Timestamp >= @StartTime and I.Timestamp < @EndTime'", + database="adsample", + collection_id="adsample" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "AzureCosmosDB") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertEqual(data_feed.source.database, "adsample") + self.assertEqual(data_feed.source.collection_id, "adsample") + self.assertEqual(data_feed.source.sql_query, "'SELECT * FROM Items I where I.Timestamp >= @StartTime and I.Timestamp < @EndTime'") + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_data_feed_with_http_request_get(self): + name = self.create_random_name("httprequestfeedget") + try: + data_feed = self.admin_client.create_data_feed( + name=name, + source=HttpRequestDataFeed( + url=self.http_request_get_url, + http_method="GET" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "HttpRequest") + self.assertIsNotNone(data_feed.source.url) + self.assertEqual(data_feed.source.http_method, "GET") + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_data_feed_with_http_request_post(self): + name = self.create_random_name("httprequestfeedpost") + try: + data_feed = self.admin_client.create_data_feed( + name=name, + source=HttpRequestDataFeed( + url=self.http_request_post_url, + http_method="POST", + payload="{'startTime': '@StartTime'}" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 10, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "HttpRequest") + self.assertIsNotNone(data_feed.source.url) + self.assertEqual(data_feed.source.http_method, "POST") + self.assertEqual(data_feed.source.payload, "{'startTime': '@StartTime'}") + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_data_feed_with_application_insights(self): + name = self.create_random_name("applicationinsights") + try: + query = "let gran=60m; let starttime=datetime(@StartTime); let endtime=starttime + gran; requests | " \ + "where timestamp >= starttime and timestamp < endtime | summarize request_count = count(), " \ + "duration_avg_ms = avg(duration), duration_95th_ms = percentile(duration, 95), " \ + "duration_max_ms = max(duration) by resultCode" + data_feed = self.admin_client.create_data_feed( + name=name, + source=AzureApplicationInsightsDataFeed( + azure_cloud="Azure", + application_id="3706fe8b-98f1-47c7-bf69-b73b6e53274d", + api_key=self.application_insights_api_key, + query=query + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2020, 7, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "AzureApplicationInsights") + self.assertIsNotNone(data_feed.source.api_key) + self.assertEqual(data_feed.source.application_id, "3706fe8b-98f1-47c7-bf69-b73b6e53274d") + self.assertIsNotNone(data_feed.source.query) + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_data_feed_with_data_explorer(self): + name = self.create_random_name("azuredataexplorer") + try: + query = "let StartDateTime = datetime(@StartTime); let EndDateTime = StartDateTime + 1d; " \ + "adsample | where Timestamp >= StartDateTime and Timestamp < EndDateTime" + data_feed = self.admin_client.create_data_feed( + name=name, + source=AzureDataExplorerDataFeed( + connection_string=self.azure_data_explorer_connection_string, + query=query + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 1, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "AzureDataExplorer") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertEqual(data_feed.source.query, query) + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_data_feed_with_influxdb(self): + name = self.create_random_name("influxdb") + try: + data_feed = self.admin_client.create_data_feed( + name=name, + source=InfluxDBDataFeed( + connection_string=self.influxdb_connection_string, + database="adsample", + user_name="adreadonly", + password=self.influxdb_password, + query="'select * from adsample2 where Timestamp = @StartTime'" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 1, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "InfluxDB") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertIsNotNone(data_feed.source.query) + self.assertIsNotNone(data_feed.source.password) + self.assertEqual(data_feed.source.database, "adsample") + self.assertEqual(data_feed.source.user_name, "adreadonly") + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_data_feed_with_datalake(self): + name = self.create_random_name("datalake") + try: + data_feed = self.admin_client.create_data_feed( + name=name, + source=AzureDataLakeStorageGen2DataFeed( + account_name="adsampledatalakegen2", + account_key=self.azure_datalake_account_key, + file_system_name="adsample", + directory_template="%Y/%m/%d", + file_template="adsample.json" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost", display_name="Cost"), + Metric(name="revenue", display_name="Revenue") + ], + dimensions=[ + Dimension(name="category", display_name="Category"), + Dimension(name="city", display_name="City") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 1, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "AzureDataLakeStorageGen2") + self.assertIsNotNone(data_feed.source.account_key) + self.assertEqual(data_feed.source.account_name, "adsampledatalakegen2") + self.assertEqual(data_feed.source.file_system_name, "adsample") + self.assertEqual(data_feed.source.directory_template, "%Y/%m/%d") + self.assertEqual(data_feed.source.file_template, "adsample.json") + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_data_feed_with_mongodb(self): + name = self.create_random_name("mongodb") + try: + data_feed = self.admin_client.create_data_feed( + name=name, + source=MongoDBDataFeed( + connection_string=self.mongodb_connection_string, + database="adsample", + command='{"find": "adsample", "filter": { Timestamp: { $eq: @StartTime }} "batchSize": 2000,}' + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 1, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "MongoDB") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertEqual(data_feed.source.database, "adsample") + self.assertEqual(data_feed.source.command, '{"find": "adsample", "filter": { Timestamp: { $eq: @StartTime }} "batchSize": 2000,}') + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_data_feed_with_mysql(self): + name = self.create_random_name("mysql") + try: + data_feed = self.admin_client.create_data_feed( + name=name, + source=MySqlDataFeed( + connection_string=self.mysql_connection_string, + query="'select * from adsample2 where Timestamp = @StartTime'" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 1, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "MySql") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertEqual(data_feed.source.query, "'select * from adsample2 where Timestamp = @StartTime'") + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_data_feed_with_postgresql(self): + name = self.create_random_name("postgresql") + try: + data_feed = self.admin_client.create_data_feed( + name=name, + source=PostgreSqlDataFeed( + connection_string=self.postgresql_connection_string, + query="'select * from adsample2 where Timestamp = @StartTime'" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost"), + Metric(name="revenue") + ], + dimensions=[ + Dimension(name="category"), + Dimension(name="city") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 1, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "PostgreSql") + self.assertIsNotNone(data_feed.source.connection_string) + self.assertEqual(data_feed.source.query, "'select * from adsample2 where Timestamp = @StartTime'") + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_data_feed_with_elasticsearch(self): + name = self.create_random_name("elastic") + try: + data_feed = self.admin_client.create_data_feed( + name=name, + source=ElasticsearchDataFeed( + host="ad-sample-es.westus2.cloudapp.azure.com", + port="9200", + auth_header=self.elasticsearch_auth_header, + query="'select * from adsample where timestamp = @StartTime'" + ), + granularity=DataFeedGranularity( + granularity_type="Daily", + ), + schema=DataFeedSchema( + metrics=[ + Metric(name="cost", display_name="Cost"), + Metric(name="revenue", display_name="Revenue") + ], + dimensions=[ + Dimension(name="category", display_name="Category"), + Dimension(name="city", display_name="City") + ], + ), + ingestion_settings=DataFeedIngestionSettings( + ingestion_begin_time=datetime.datetime(2019, 1, 1), + ), + + ) + + self.assertIsNotNone(data_feed.id) + self.assertIsNotNone(data_feed.created_time) + self.assertIsNotNone(data_feed.name) + self.assertEqual(data_feed.source.data_source_type, "Elasticsearch") + self.assertIsNotNone(data_feed.source.auth_header) + self.assertEqual(data_feed.source.port, "9200") + self.assertEqual(data_feed.source.host, "ad-sample-es.westus2.cloudapp.azure.com") + self.assertEqual(data_feed.source.query, "'select * from adsample where timestamp = @StartTime'") + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_list_data_feeds(self): + feeds = self.admin_client.list_data_feeds() + assert len(list(feeds)) > 0 + + def test_list_data_feeds_with_data_feed_name(self): + feeds = self.admin_client.list_data_feeds(data_feed_name="testDataFeed1") + feed_list = list(feeds) + assert len(feed_list) == 1 + + def test_list_data_feeds_with_skip(self): + all_feeds = self.admin_client.list_data_feeds() + skipped_feeds = self.admin_client.list_data_feeds(skip=1) + all_feeds_list = list(all_feeds) + skipped_feeds_list = list(skipped_feeds) + assert len(all_feeds_list) == len(skipped_feeds_list) + 1 + + def test_list_data_feeds_with_status(self): + feeds = self.admin_client.list_data_feeds(status="Paused") + assert len(list(feeds)) == 0 + + def test_list_data_feeds_with_source_type(self): + feeds = self.admin_client.list_data_feeds(data_source_type="AzureBlob") + assert len(list(feeds)) > 0 + + def test_list_data_feeds_with_granularity_type(self): + feeds = self.admin_client.list_data_feeds(granularity_type="Daily") + assert len(list(feeds)) > 0 + + def test_update_data_feed_with_model(self): + data_feed = self._create_data_feed_for_update("update") + try: + data_feed.name = "update" + data_feed.options.data_feed_description = "updated" + data_feed.schema.timestamp_column = "time" + data_feed.ingestion_settings.ingestion_begin_time = datetime.datetime(2020, 12, 10) + data_feed.ingestion_settings.ingestion_start_offset = 1 + data_feed.ingestion_settings.data_source_request_concurrency = 1 + data_feed.ingestion_settings.ingestion_retry_delay = 1 + data_feed.ingestion_settings.stop_retry_after = 1 + data_feed.options.rollup_settings.rollup_type = "AlreadyRollup" + data_feed.options.rollup_settings.rollup_method = "Sum" + data_feed.options.rollup_settings.rollup_identification_value = "sumrollup" + data_feed.options.rollup_settings.auto_rollup_group_by_column_names = [] + data_feed.options.missing_data_point_fill_settings.fill_type = "CustomValue" + data_feed.options.missing_data_point_fill_settings.custom_fill_value = 2 + data_feed.options.access_mode = "Public" + data_feed.options.viewers = ["updated"] + data_feed.status = "Paused" + data_feed.options.action_link_template = "updated" + data_feed.source.connection_string = "updated" + data_feed.source.query = "get data" + + updated = self.admin_client.update_data_feed(data_feed) + self.assertEqual(updated.name, "update") + self.assertEqual(updated.options.data_feed_description, "updated") + self.assertEqual(updated.schema.timestamp_column, "time") + self.assertEqual(updated.ingestion_settings.ingestion_begin_time, + datetime.datetime(2020, 12, 10, tzinfo=tzutc())) + self.assertEqual(updated.ingestion_settings.ingestion_start_offset, 1) + self.assertEqual(updated.ingestion_settings.data_source_request_concurrency, 1) + self.assertEqual(updated.ingestion_settings.ingestion_retry_delay, 1) + self.assertEqual(updated.ingestion_settings.stop_retry_after, 1) + self.assertEqual(updated.options.rollup_settings.rollup_type, "AlreadyRollup") + self.assertEqual(updated.options.rollup_settings.rollup_method, "Sum") + self.assertEqual(updated.options.rollup_settings.rollup_identification_value, "sumrollup") + self.assertEqual(updated.options.rollup_settings.auto_rollup_group_by_column_names, []) + self.assertEqual(updated.options.missing_data_point_fill_settings.fill_type, "CustomValue") + self.assertEqual(updated.options.missing_data_point_fill_settings.custom_fill_value, 2) + self.assertEqual(updated.options.access_mode, "Public") + self.assertEqual(updated.options.viewers, ["updated"]) + self.assertEqual(updated.status, "Paused") + self.assertEqual(updated.options.action_link_template, "updated") + self.assertEqual(updated.source.connection_string, "updated") + self.assertEqual(updated.source.query, "get data") + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_update_data_feed_with_kwargs(self): + + data_feed = self._create_data_feed_for_update("update") + try: + updated = self.admin_client.update_data_feed( + data_feed.id, + name="update", + data_feed_description="updated", + timestamp_column="time", + ingestion_begin_time=datetime.datetime(2020, 12, 10), + ingestion_start_offset=1, + data_source_request_concurrency=1, + ingestion_retry_delay=1, + stop_retry_after=1, + rollup_type="AlreadyRollup", + rollup_method="Sum", + rollup_identification_value="sumrollup", + auto_rollup_group_by_column_names=[], + fill_type="CustomValue", + custom_fill_value=2, + access_mode="Public", + viewers=["updated"], + status="Paused", + action_link_template="updated", + source=SQLServerDataFeed( + connection_string="updated", + query="get data" + ) + ) + self.assertEqual(updated.name, "update") + self.assertEqual(updated.options.data_feed_description, "updated") + self.assertEqual(updated.schema.timestamp_column, "time") + self.assertEqual(updated.ingestion_settings.ingestion_begin_time, + datetime.datetime(2020, 12, 10, tzinfo=tzutc())) + self.assertEqual(updated.ingestion_settings.ingestion_start_offset, 1) + self.assertEqual(updated.ingestion_settings.data_source_request_concurrency, 1) + self.assertEqual(updated.ingestion_settings.ingestion_retry_delay, 1) + self.assertEqual(updated.ingestion_settings.stop_retry_after, 1) + self.assertEqual(updated.options.rollup_settings.rollup_type, "AlreadyRollup") + self.assertEqual(updated.options.rollup_settings.rollup_method, "Sum") + self.assertEqual(updated.options.rollup_settings.rollup_identification_value, "sumrollup") + self.assertEqual(updated.options.rollup_settings.auto_rollup_group_by_column_names, []) + self.assertEqual(updated.options.missing_data_point_fill_settings.fill_type, "CustomValue") + self.assertEqual(updated.options.missing_data_point_fill_settings.custom_fill_value, 2) + self.assertEqual(updated.options.access_mode, "Public") + self.assertEqual(updated.options.viewers, ["updated"]) + self.assertEqual(updated.status, "Paused") + self.assertEqual(updated.options.action_link_template, "updated") + self.assertEqual(updated.source.connection_string, "updated") + self.assertEqual(updated.source.query, "get data") + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_update_data_feed_with_model_and_kwargs(self): + + data_feed = self._create_data_feed_for_update("update") + try: + data_feed.name = "updateMe" + data_feed.options.data_feed_description = "updateMe" + data_feed.schema.timestamp_column = "don't update me" + data_feed.ingestion_settings.ingestion_begin_time = datetime.datetime(2020, 12, 22) + data_feed.ingestion_settings.ingestion_start_offset = 2 + data_feed.ingestion_settings.data_source_request_concurrency = 2 + data_feed.ingestion_settings.ingestion_retry_delay = 2 + data_feed.ingestion_settings.stop_retry_after = 2 + data_feed.options.rollup_settings.rollup_type = "don't update me" + data_feed.options.rollup_settings.rollup_method = "don't update me" + data_feed.options.rollup_settings.rollup_identification_value = "don't update me" + data_feed.options.rollup_settings.auto_rollup_group_by_column_names = [] + data_feed.options.missing_data_point_fill_settings.fill_type = "don't update me" + data_feed.options.missing_data_point_fill_settings.custom_fill_value = 4 + data_feed.options.access_mode = "don't update me" + data_feed.options.viewers = ["don't update me"] + data_feed.status = "don't update me" + data_feed.options.action_link_template = "don't update me" + data_feed.source.connection_string = "don't update me" + data_feed.source.query = "don't update me" + + updated = self.admin_client.update_data_feed( + data_feed, + timestamp_column="time", + ingestion_begin_time=datetime.datetime(2020, 12, 10), + ingestion_start_offset=1, + data_source_request_concurrency=1, + ingestion_retry_delay=1, + stop_retry_after=1, + rollup_type="AlreadyRollup", + rollup_method="Sum", + rollup_identification_value="sumrollup", + auto_rollup_group_by_column_names=[], + fill_type="CustomValue", + custom_fill_value=2, + access_mode="Public", + viewers=["updated"], + status="Paused", + action_link_template="updated", + source=SQLServerDataFeed( + connection_string="updated", + query="get data" + ) + ) + self.assertEqual(updated.name, "updateMe") + self.assertEqual(updated.options.data_feed_description, "updateMe") + self.assertEqual(updated.schema.timestamp_column, "time") + self.assertEqual(updated.ingestion_settings.ingestion_begin_time, + datetime.datetime(2020, 12, 10, tzinfo=tzutc())) + self.assertEqual(updated.ingestion_settings.ingestion_start_offset, 1) + self.assertEqual(updated.ingestion_settings.data_source_request_concurrency, 1) + self.assertEqual(updated.ingestion_settings.ingestion_retry_delay, 1) + self.assertEqual(updated.ingestion_settings.stop_retry_after, 1) + self.assertEqual(updated.options.rollup_settings.rollup_type, "AlreadyRollup") + self.assertEqual(updated.options.rollup_settings.rollup_method, "Sum") + self.assertEqual(updated.options.rollup_settings.rollup_identification_value, "sumrollup") + self.assertEqual(updated.options.rollup_settings.auto_rollup_group_by_column_names, []) + self.assertEqual(updated.options.missing_data_point_fill_settings.fill_type, "CustomValue") + self.assertEqual(updated.options.missing_data_point_fill_settings.custom_fill_value, 2) + self.assertEqual(updated.options.access_mode, "Public") + self.assertEqual(updated.options.viewers, ["updated"]) + self.assertEqual(updated.status, "Paused") + self.assertEqual(updated.options.action_link_template, "updated") + self.assertEqual(updated.source.connection_string, "updated") + self.assertEqual(updated.source.query, "get data") + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_update_data_feed_by_reseting_properties(self): + + data_feed = self._create_data_feed_for_update("update") + try: + updated = self.admin_client.update_data_feed( + data_feed.id, + name="update", + data_feed_description=None, + timestamp_column=None, + ingestion_start_offset=None, + data_source_request_concurrency=None, + ingestion_retry_delay=None, + stop_retry_after=None, + rollup_type=None, + rollup_method=None, + rollup_identification_value=None, + auto_rollup_group_by_column_names=None, + fill_type=None, + custom_fill_value=None, + access_mode=None, + viewers=None, + status=None, + action_link_template=None, + ) + self.assertEqual(updated.name, "update") + # self.assertEqual(updated.options.data_feed_description, "") # doesn't currently clear + # self.assertEqual(updated.schema.timestamp_column, "") # doesn't currently clear + self.assertEqual(updated.ingestion_settings.ingestion_begin_time, + datetime.datetime(2019, 10, 1, tzinfo=tzutc())) + self.assertEqual(updated.ingestion_settings.ingestion_start_offset, -1) + self.assertEqual(updated.ingestion_settings.data_source_request_concurrency, 0) + self.assertEqual(updated.ingestion_settings.ingestion_retry_delay, -1) + self.assertEqual(updated.ingestion_settings.stop_retry_after, -1) + self.assertEqual(updated.options.rollup_settings.rollup_type, "NoRollup") + self.assertEqual(updated.options.rollup_settings.rollup_method, "None") + self.assertEqual(updated.options.rollup_settings.rollup_identification_value, None) + self.assertEqual(updated.options.rollup_settings.auto_rollup_group_by_column_names, []) + self.assertEqual(updated.options.missing_data_point_fill_settings.fill_type, "SmartFilling") + self.assertEqual(updated.options.missing_data_point_fill_settings.custom_fill_value, 0) + self.assertEqual(updated.options.access_mode, "Private") + # self.assertEqual(updated.options.viewers, ["viewers"]) # doesn't currently clear + self.assertEqual(updated.status, "Active") + # self.assertEqual(updated.options.action_link_template, "updated") # doesn't currently clear + + finally: + self.admin_client.delete_data_feed(data_feed.id) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_hooks.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_hooks.py new file mode 100644 index 000000000000..7515c4bcdd5e --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_hooks.py @@ -0,0 +1,255 @@ +# coding=utf-8 +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +import pytest +from azure.core.exceptions import ResourceNotFoundError + +from azure.ai.metricsadvisor.models import ( + EmailHook, + WebHook, +) +from base_testcase import TestMetricsAdvisorAdministrationClientBase + + +class TestMetricsAdvisorAdministrationClient(TestMetricsAdvisorAdministrationClientBase): + + def test_create_email_hook(self): + email_hook_name = self.create_random_name("testemailhook") + try: + email_hook = self.admin_client.create_hook( + name=email_hook_name, + hook=EmailHook( + emails_to_alert=["yournamehere@microsoft.com"], + description="my email hook", + external_link="external link" + ) + ) + self.assertIsNotNone(email_hook.id) + self.assertIsNotNone(email_hook.name) + self.assertIsNotNone(email_hook.admins) + self.assertEqual(email_hook.emails_to_alert, ["yournamehere@microsoft.com"]) + self.assertEqual(email_hook.description, "my email hook") + self.assertEqual(email_hook.external_link, "external link") + self.assertEqual(email_hook.hook_type, "Email") + finally: + self.admin_client.delete_hook(email_hook.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_hook(email_hook.id) + + def test_create_web_hook(self): + web_hook_name = self.create_random_name("testwebhook") + try: + web_hook = self.admin_client.create_hook( + name=web_hook_name, + hook=WebHook( + endpoint="https://httpbin.org/post", + description="my web hook", + external_link="external link" + ) + ) + self.assertIsNotNone(web_hook.id) + self.assertIsNotNone(web_hook.name) + self.assertIsNotNone(web_hook.admins) + self.assertEqual(web_hook.endpoint, "https://httpbin.org/post") + self.assertEqual(web_hook.description, "my web hook") + self.assertEqual(web_hook.external_link, "external link") + self.assertEqual(web_hook.hook_type, "Webhook") + finally: + self.admin_client.delete_hook(web_hook.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_hook(web_hook.id) + + def test_list_hooks(self): + hooks = self.admin_client.list_hooks() + assert len(list(hooks)) > 0 + + def test_update_email_hook_with_model(self): + name = self.create_random_name("testwebhook") + try: + hook = self._create_email_hook_for_update(name) + hook.name = "update" + hook.description = "update" + hook.external_link = "update" + hook.emails_to_alert = ["myemail@m.com"] + + updated = self.admin_client.update_hook(hook) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "update") + self.assertEqual(updated.external_link, "update") + self.assertEqual(updated.emails_to_alert, ["myemail@m.com"]) + + finally: + self.admin_client.delete_hook(hook.id) + + def test_update_email_hook_with_kwargs(self): + name = self.create_random_name("testhook") + try: + hook = self._create_email_hook_for_update(name) + updated = self.admin_client.update_hook( + hook.id, + hook_type="Email", + name="update", + description="update", + external_link="update", + emails_to_alert=["myemail@m.com"] + ) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "update") + self.assertEqual(updated.external_link, "update") + self.assertEqual(updated.emails_to_alert, ["myemail@m.com"]) + + finally: + self.admin_client.delete_hook(hook.id) + + def test_update_email_hook_with_model_and_kwargs(self): + name = self.create_random_name("testhook") + try: + hook = self._create_email_hook_for_update(name) + + hook.name = "don't update me" + hook.description = "don't update me" + hook.emails_to_alert = [] + updated = self.admin_client.update_hook( + hook, + hook_type="Email", + name="update", + description="update", + external_link="update", + emails_to_alert=["myemail@m.com"] + ) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "update") + self.assertEqual(updated.external_link, "update") + self.assertEqual(updated.emails_to_alert, ["myemail@m.com"]) + + finally: + self.admin_client.delete_hook(hook.id) + + def test_update_email_hook_by_resetting_properties(self): + name = self.create_random_name("testhook") + try: + hook = self._create_email_hook_for_update(name) + updated = self.admin_client.update_hook( + hook.id, + hook_type="Email", + name="reset", + description=None, + external_link=None, + ) + + self.assertEqual(updated.name, "reset") + + # sending null, but not clearing properties + # self.assertEqual(updated.description, "") + # self.assertEqual(updated.external_link, "") + + finally: + self.admin_client.delete_hook(hook.id) + + def test_update_web_hook_with_model(self): + name = self.create_random_name("testwebhook") + try: + hook = self._create_web_hook_for_update(name) + hook.name = "update" + hook.description = "update" + hook.external_link = "update" + hook.username = "myusername" + hook.password = "password" + + updated = self.admin_client.update_hook(hook) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "update") + self.assertEqual(updated.external_link, "update") + self.assertEqual(updated.username, "myusername") + self.assertEqual(updated.password, "password") + + finally: + self.admin_client.delete_hook(hook.id) + + def test_update_web_hook_with_kwargs(self): + name = self.create_random_name("testwebhook") + try: + hook = self._create_web_hook_for_update(name) + updated = self.admin_client.update_hook( + hook.id, + hook_type="Web", + endpoint="https://httpbin.org/post", + name="update", + description="update", + external_link="update", + username="myusername", + password="password" + ) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "update") + self.assertEqual(updated.external_link, "update") + self.assertEqual(updated.username, "myusername") + self.assertEqual(updated.password, "password") + + finally: + self.admin_client.delete_hook(hook.id) + + def test_update_web_hook_with_model_and_kwargs(self): + name = self.create_random_name("testwebhook") + try: + hook = self._create_web_hook_for_update(name) + + hook.name = "don't update me" + hook.description = "updateMe" + hook.username = "don't update me" + hook.password = "don't update me" + hook.endpoint = "don't update me" + updated = self.admin_client.update_hook( + hook, + hook_type="Web", + endpoint="https://httpbin.org/post", + name="update", + external_link="update", + username="myusername", + password="password" + ) + + self.assertEqual(updated.name, "update") + self.assertEqual(updated.description, "updateMe") + self.assertEqual(updated.external_link, "update") + self.assertEqual(updated.username, "myusername") + self.assertEqual(updated.password, "password") + + finally: + self.admin_client.delete_hook(hook.id) + + def test_update_web_hook_by_resetting_properties(self): + name = self.create_random_name("testhook") + try: + hook = self._create_web_hook_for_update(name) + updated = self.admin_client.update_hook( + hook.id, + hook_type="Web", + name="reset", + description=None, + endpoint="https://httpbin.org/post", + external_link=None, + username="myusername", + password=None + ) + + self.assertEqual(updated.name, "reset") + self.assertEqual(updated.password, "") + + # sending null, but not clearing properties + # self.assertEqual(updated.description, "") + # self.assertEqual(updated.external_link, "") + + finally: + self.admin_client.delete_hook(hook.id) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_metric_anomaly_detection_config.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_metric_anomaly_detection_config.py new file mode 100644 index 000000000000..5e4aef9e1bfd --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_metric_anomaly_detection_config.py @@ -0,0 +1,806 @@ +# coding=utf-8 +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +import pytest +from azure.core.exceptions import ResourceNotFoundError + +from azure.ai.metricsadvisor.models import ( + MetricDetectionCondition, + MetricSeriesGroupDetectionCondition, + MetricSingleSeriesDetectionCondition, + SmartDetectionCondition, + SuppressCondition, + ChangeThresholdCondition, + HardThresholdCondition, +) +from base_testcase import TestMetricsAdvisorAdministrationClientBase + + +class TestMetricsAdvisorAdministrationClient(TestMetricsAdvisorAdministrationClientBase): + + def test_create_metric_anomaly_detection_configuration_whole_series_detection(self): + + data_feed = self._create_data_feed("adconfig") + try: + detection_config_name = self.create_random_name("testdetectionconfig") + config = self.admin_client.create_metric_anomaly_detection_configuration( + name=detection_config_name, + metric_id=data_feed.metric_ids[0], + description="My test metric anomaly detection configuration", + whole_series_detection_condition=MetricDetectionCondition( + cross_conditions_operator="OR", + smart_detection_condition=SmartDetectionCondition( + sensitivity=50, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=50, + min_ratio=50 + ) + ), + hard_threshold_condition=HardThresholdCondition( + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=5 + ), + lower_bound=0, + upper_bound=100 + ), + change_threshold_condition=ChangeThresholdCondition( + change_percentage=50, + shift_point=30, + within_range=True, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + ) + ) + self.assertIsNotNone(config.id) + self.assertEqual(config.metric_id, data_feed.metric_ids[0]) + self.assertEqual(config.description, "My test metric anomaly detection configuration") + self.assertIsNotNone(config.name) + self.assertIsNone(config.series_detection_conditions) + self.assertIsNone(config.series_group_detection_conditions) + self.assertEqual(config.whole_series_detection_condition.cross_conditions_operator, "OR") + self.assertEqual( + config.whole_series_detection_condition.change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(config.whole_series_detection_condition.change_threshold_condition.change_percentage, 50) + self.assertEqual(config.whole_series_detection_condition.change_threshold_condition.shift_point, 30) + self.assertTrue(config.whole_series_detection_condition.change_threshold_condition.within_range) + self.assertEqual( + config.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_number, 2) + self.assertEqual( + config.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual( + config.whole_series_detection_condition.hard_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(config.whole_series_detection_condition.hard_threshold_condition.lower_bound, 0) + self.assertEqual(config.whole_series_detection_condition.hard_threshold_condition.upper_bound, 100) + self.assertEqual( + config.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual( + config.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_ratio, 5) + self.assertEqual( + config.whole_series_detection_condition.smart_detection_condition.anomaly_detector_direction, "Both") + self.assertEqual(config.whole_series_detection_condition.smart_detection_condition.sensitivity, 50) + self.assertEqual( + config.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_number, 50) + self.assertEqual( + config.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_ratio, 50) + + self.admin_client.delete_metric_anomaly_detection_configuration(config.id) + + with self.assertRaises(ResourceNotFoundError): + self.admin_client.get_metric_anomaly_detection_configuration(config.id) + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_metric_anomaly_detection_config_with_series_and_group_conditions(self): + data_feed = self._create_data_feed("adconfigget") + try: + detection_config_name = self.create_random_name("testdetectionconfiget") + detection_config = self.admin_client.create_metric_anomaly_detection_configuration( + name=detection_config_name, + metric_id=data_feed.metric_ids[0], + description="My test metric anomaly detection configuration", + whole_series_detection_condition=MetricDetectionCondition( + cross_conditions_operator="AND", + smart_detection_condition=SmartDetectionCondition( + sensitivity=50, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=50, + min_ratio=50 + ) + ), + hard_threshold_condition=HardThresholdCondition( + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=5 + ), + lower_bound=0, + upper_bound=100 + ), + change_threshold_condition=ChangeThresholdCondition( + change_percentage=50, + shift_point=30, + within_range=True, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + ), + series_detection_conditions=[MetricSingleSeriesDetectionCondition( + series_key={"city": "Shenzhen", "category": "Jewelry"}, + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ) + )], + series_group_detection_conditions=[MetricSeriesGroupDetectionCondition( + series_group_key={"city": "Sao Paulo"}, + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ) + )] + ) + + self.assertIsNotNone(detection_config.id) + self.assertEqual(detection_config.metric_id, data_feed.metric_ids[0]) + self.assertEqual(detection_config.description, "My test metric anomaly detection configuration") + self.assertIsNotNone(detection_config.name) + self.assertEqual(detection_config.whole_series_detection_condition.cross_conditions_operator, "AND") + self.assertEqual( + detection_config.whole_series_detection_condition.change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.whole_series_detection_condition.change_threshold_condition.change_percentage, 50) + self.assertEqual(detection_config.whole_series_detection_condition.change_threshold_condition.shift_point, 30) + self.assertTrue(detection_config.whole_series_detection_condition.change_threshold_condition.within_range) + self.assertEqual( + detection_config.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_number, 2) + self.assertEqual( + detection_config.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual( + detection_config.whole_series_detection_condition.hard_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.whole_series_detection_condition.hard_threshold_condition.lower_bound, 0) + self.assertEqual(detection_config.whole_series_detection_condition.hard_threshold_condition.upper_bound, 100) + self.assertEqual( + detection_config.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual( + detection_config.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_ratio, 5) + self.assertEqual( + detection_config.whole_series_detection_condition.smart_detection_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.whole_series_detection_condition.smart_detection_condition.sensitivity, 50) + self.assertEqual( + detection_config.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_number, 50) + self.assertEqual( + detection_config.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_ratio, 50) + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 100) + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 1) + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.sensitivity, 63) + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Both") + self.assertEqual( + detection_config.series_detection_conditions[0].series_key, {'city': 'Shenzhen', 'category': 'Jewelry'}) + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 100) + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 1) + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.sensitivity, 63) + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Both") + self.assertEqual( + detection_config.series_group_detection_conditions[0].series_group_key, {'city': 'Sao Paulo'}) + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_create_detection_config_with_multiple_series_and_group_conditions(self): + data_feed = self._create_data_feed("datafeedforconfig") + try: + detection_config_name = self.create_random_name("multipledetectionconfigs") + detection_config = self.admin_client.create_metric_anomaly_detection_configuration( + name=detection_config_name, + metric_id=data_feed.metric_ids[0], + description="My test metric anomaly detection configuration", + whole_series_detection_condition=MetricDetectionCondition( + cross_conditions_operator="AND", + smart_detection_condition=SmartDetectionCondition( + sensitivity=50, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=50, + min_ratio=50 + ) + ), + hard_threshold_condition=HardThresholdCondition( + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=5 + ), + lower_bound=0, + upper_bound=100 + ), + change_threshold_condition=ChangeThresholdCondition( + change_percentage=50, + shift_point=30, + within_range=True, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + ), + series_detection_conditions=[ + MetricSingleSeriesDetectionCondition( + series_key={"city": "Shenzhen", "category": "Jewelry"}, + cross_conditions_operator="AND", + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ), + hard_threshold_condition=HardThresholdCondition( + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=5 + ), + lower_bound=0, + upper_bound=100 + ), + change_threshold_condition=ChangeThresholdCondition( + change_percentage=50, + shift_point=30, + within_range=True, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + ), + MetricSingleSeriesDetectionCondition( + series_key={"city": "Osaka", "category": "Cell Phones"}, + cross_conditions_operator="AND", + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ) + ) + ], + series_group_detection_conditions=[ + MetricSeriesGroupDetectionCondition( + series_group_key={"city": "Sao Paulo"}, + cross_conditions_operator="AND", + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ), + hard_threshold_condition=HardThresholdCondition( + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=5 + ), + lower_bound=0, + upper_bound=100 + ), + change_threshold_condition=ChangeThresholdCondition( + change_percentage=50, + shift_point=30, + within_range=True, + anomaly_detector_direction="Both", + suppress_condition=SuppressCondition( + min_number=2, + min_ratio=2 + ) + ) + ), + MetricSeriesGroupDetectionCondition( + series_group_key={"city": "Seoul"}, + cross_conditions_operator="AND", + smart_detection_condition=SmartDetectionCondition( + anomaly_detector_direction="Both", + sensitivity=63, + suppress_condition=SuppressCondition( + min_number=1, + min_ratio=100 + ) + ) + ) + ] + ) + + self.assertIsNotNone(detection_config.id) + self.assertEqual(detection_config.metric_id, data_feed.metric_ids[0]) + self.assertEqual(detection_config.description, "My test metric anomaly detection configuration") + self.assertIsNotNone(detection_config.name) + + # whole series detection condition + self.assertEqual(detection_config.whole_series_detection_condition.cross_conditions_operator, "AND") + self.assertEqual( + detection_config.whole_series_detection_condition.change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.whole_series_detection_condition.change_threshold_condition.change_percentage, 50) + self.assertEqual(detection_config.whole_series_detection_condition.change_threshold_condition.shift_point, 30) + self.assertTrue(detection_config.whole_series_detection_condition.change_threshold_condition.within_range) + self.assertEqual( + detection_config.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_number, 2) + self.assertEqual( + detection_config.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual( + detection_config.whole_series_detection_condition.hard_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.whole_series_detection_condition.hard_threshold_condition.lower_bound, 0) + self.assertEqual(detection_config.whole_series_detection_condition.hard_threshold_condition.upper_bound, 100) + self.assertEqual( + detection_config.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual( + detection_config.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_ratio, 5) + self.assertEqual( + detection_config.whole_series_detection_condition.smart_detection_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.whole_series_detection_condition.smart_detection_condition.sensitivity, 50) + self.assertEqual( + detection_config.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_number, 50) + self.assertEqual( + detection_config.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_ratio, 50) + + # series detection conditions + self.assertEqual( + detection_config.series_detection_conditions[0].series_key, {'city': 'Shenzhen', 'category': 'Jewelry'}) + self.assertEqual(detection_config.series_detection_conditions[0].cross_conditions_operator, "AND") + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 100) + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 1) + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.sensitivity, 63) + self.assertEqual( + detection_config.series_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Both") + self.assertEqual( + detection_config.series_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.series_detection_conditions[0].change_threshold_condition.change_percentage, 50) + self.assertEqual(detection_config.series_detection_conditions[0].change_threshold_condition.shift_point, 30) + self.assertTrue(detection_config.series_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual( + detection_config.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 2) + self.assertEqual( + detection_config.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual( + detection_config.series_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.series_detection_conditions[0].hard_threshold_condition.lower_bound, 0) + self.assertEqual(detection_config.series_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual( + detection_config.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual( + detection_config.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 5) + self.assertEqual( + detection_config.series_detection_conditions[1].series_key, {"city": "Osaka", "category": "Cell Phones"}) + self.assertEqual( + detection_config.series_detection_conditions[1].smart_detection_condition.suppress_condition.min_ratio, 100) + self.assertEqual( + detection_config.series_detection_conditions[1].smart_detection_condition.suppress_condition.min_number, 1) + self.assertEqual( + detection_config.series_detection_conditions[1].smart_detection_condition.sensitivity, 63) + self.assertEqual( + detection_config.series_detection_conditions[1].smart_detection_condition.anomaly_detector_direction, "Both") + + # series group detection conditions + self.assertEqual( + detection_config.series_group_detection_conditions[0].series_group_key, {"city": "Sao Paulo"}) + self.assertEqual(detection_config.series_group_detection_conditions[0].cross_conditions_operator, "AND") + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 100) + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 1) + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.sensitivity, 63) + self.assertEqual( + detection_config.series_group_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Both") + self.assertEqual( + detection_config.series_group_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.series_group_detection_conditions[0].change_threshold_condition.change_percentage, 50) + self.assertEqual(detection_config.series_group_detection_conditions[0].change_threshold_condition.shift_point, 30) + self.assertTrue(detection_config.series_group_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual( + detection_config.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 2) + self.assertEqual( + detection_config.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual( + detection_config.series_group_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(detection_config.series_group_detection_conditions[0].hard_threshold_condition.lower_bound, 0) + self.assertEqual(detection_config.series_group_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual( + detection_config.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual( + detection_config.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 5) + self.assertEqual( + detection_config.series_group_detection_conditions[1].series_group_key, {"city": "Seoul"}) + self.assertEqual( + detection_config.series_group_detection_conditions[1].smart_detection_condition.suppress_condition.min_ratio, 100) + self.assertEqual( + detection_config.series_group_detection_conditions[1].smart_detection_condition.suppress_condition.min_number, 1) + self.assertEqual( + detection_config.series_group_detection_conditions[1].smart_detection_condition.sensitivity, 63) + self.assertEqual( + detection_config.series_group_detection_conditions[1].smart_detection_condition.anomaly_detector_direction, "Both") + + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_list_metric_anomaly_detection_configs(self): + configs = self.admin_client.list_metric_anomaly_detection_configurations(metric_id=self.metric_id) + assert len(list(configs)) > 0 + + def test_update_detection_config_with_model(self): + try: + detection_config, data_feed = self._create_detection_config_for_update("updatedetection") + + detection_config.name = "updated" + detection_config.description = "updated" + change_threshold_condition = ChangeThresholdCondition( + anomaly_detector_direction="Both", + change_percentage=20, + shift_point=10, + within_range=True, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + hard_threshold_condition = HardThresholdCondition( + anomaly_detector_direction="Up", + upper_bound=100, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + smart_detection_condition = SmartDetectionCondition( + anomaly_detector_direction="Up", + sensitivity=10, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + detection_config.series_detection_conditions[0].change_threshold_condition = change_threshold_condition + detection_config.series_detection_conditions[0].hard_threshold_condition = hard_threshold_condition + detection_config.series_detection_conditions[0].smart_detection_condition = smart_detection_condition + detection_config.series_detection_conditions[0].cross_conditions_operator = "AND" + detection_config.series_group_detection_conditions[0].change_threshold_condition = change_threshold_condition + detection_config.series_group_detection_conditions[0].hard_threshold_condition = hard_threshold_condition + detection_config.series_group_detection_conditions[0].smart_detection_condition = smart_detection_condition + detection_config.series_group_detection_conditions[0].cross_conditions_operator = "AND" + detection_config.whole_series_detection_condition.hard_threshold_condition = hard_threshold_condition + detection_config.whole_series_detection_condition.smart_detection_condition = smart_detection_condition + detection_config.whole_series_detection_condition.change_threshold_condition = change_threshold_condition + detection_config.whole_series_detection_condition.cross_conditions_operator = "OR" + + updated = self.admin_client.update_metric_anomaly_detection_configuration(detection_config) + + self.assertEqual(updated.name, "updated") + self.assertEqual(updated.description, "updated") + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.shift_point, 10) + self.assertTrue(updated.series_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].cross_conditions_operator, "AND") + + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.shift_point, 10) + self.assertTrue(updated.series_group_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].cross_conditions_operator, "AND") + + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.shift_point, 10) + self.assertTrue(updated.whole_series_detection_condition.change_threshold_condition.within_range) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.cross_conditions_operator, "OR") + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_update_detection_config_with_kwargs(self): + try: + detection_config, data_feed = self._create_detection_config_for_update("updatedetection") + change_threshold_condition = ChangeThresholdCondition( + anomaly_detector_direction="Both", + change_percentage=20, + shift_point=10, + within_range=True, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + hard_threshold_condition = HardThresholdCondition( + anomaly_detector_direction="Up", + upper_bound=100, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + smart_detection_condition = SmartDetectionCondition( + anomaly_detector_direction="Up", + sensitivity=10, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + updated = self.admin_client.update_metric_anomaly_detection_configuration( + detection_config.id, + name="updated", + description="updated", + whole_series_detection_condition=MetricDetectionCondition( + cross_conditions_operator="OR", + smart_detection_condition=smart_detection_condition, + hard_threshold_condition=hard_threshold_condition, + change_threshold_condition=change_threshold_condition + ), + series_detection_conditions=[MetricSingleSeriesDetectionCondition( + series_key={"city": "San Paulo", "category": "Jewelry"}, + cross_conditions_operator="AND", + smart_detection_condition=smart_detection_condition, + hard_threshold_condition=hard_threshold_condition, + change_threshold_condition=change_threshold_condition + )], + series_group_detection_conditions=[MetricSeriesGroupDetectionCondition( + series_group_key={"city": "Shenzen"}, + cross_conditions_operator="AND", + smart_detection_condition=smart_detection_condition, + hard_threshold_condition=hard_threshold_condition, + change_threshold_condition=change_threshold_condition + )] + ) + + self.assertEqual(updated.name, "updated") + self.assertEqual(updated.description, "updated") + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.shift_point, 10) + self.assertTrue(updated.series_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].cross_conditions_operator, "AND") + self.assertEqual(updated.series_detection_conditions[0].series_key, {"city": "San Paulo", "category": "Jewelry"}) + + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.shift_point, 10) + self.assertTrue(updated.series_group_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].cross_conditions_operator, "AND") + self.assertEqual(updated.series_group_detection_conditions[0].series_group_key, {"city": "Shenzen"}) + + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.shift_point, 10) + self.assertTrue(updated.whole_series_detection_condition.change_threshold_condition.within_range) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.cross_conditions_operator, "OR") + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_update_detection_config_with_model_and_kwargs(self): + try: + detection_config, data_feed = self._create_detection_config_for_update("updatedetection") + change_threshold_condition = ChangeThresholdCondition( + anomaly_detector_direction="Both", + change_percentage=20, + shift_point=10, + within_range=True, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + hard_threshold_condition = HardThresholdCondition( + anomaly_detector_direction="Up", + upper_bound=100, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + smart_detection_condition = SmartDetectionCondition( + anomaly_detector_direction="Up", + sensitivity=10, + suppress_condition=SuppressCondition( + min_number=5, + min_ratio=2 + ) + ) + + detection_config.name = "updateMe" + detection_config.description = "updateMe" + updated = self.admin_client.update_metric_anomaly_detection_configuration( + detection_config, + whole_series_detection_condition=MetricDetectionCondition( + cross_conditions_operator="OR", + smart_detection_condition=smart_detection_condition, + hard_threshold_condition=hard_threshold_condition, + change_threshold_condition=change_threshold_condition + ), + series_detection_conditions=[MetricSingleSeriesDetectionCondition( + series_key={"city": "San Paulo", "category": "Jewelry"}, + cross_conditions_operator="AND", + smart_detection_condition=smart_detection_condition, + hard_threshold_condition=hard_threshold_condition, + change_threshold_condition=change_threshold_condition + )], + series_group_detection_conditions=[MetricSeriesGroupDetectionCondition( + series_group_key={"city": "Shenzen"}, + cross_conditions_operator="AND", + smart_detection_condition=smart_detection_condition, + hard_threshold_condition=hard_threshold_condition, + change_threshold_condition=change_threshold_condition + )] + ) + + self.assertEqual(updated.name, "updateMe") + self.assertEqual(updated.description, "updateMe") + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.shift_point, 10) + self.assertTrue(updated.series_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_detection_conditions[0].cross_conditions_operator, "AND") + self.assertEqual(updated.series_detection_conditions[0].series_key, {"city": "San Paulo", "category": "Jewelry"}) + + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.shift_point, 10) + self.assertTrue(updated.series_group_detection_conditions[0].change_threshold_condition.within_range) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.series_group_detection_conditions[0].smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.series_group_detection_conditions[0].cross_conditions_operator, "AND") + self.assertEqual(updated.series_group_detection_conditions[0].series_group_key, {"city": "Shenzen"}) + + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.anomaly_detector_direction, "Both") + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.change_percentage, 20) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.shift_point, 10) + self.assertTrue(updated.whole_series_detection_condition.change_threshold_condition.within_range) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.change_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.upper_bound, 100) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.hard_threshold_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.anomaly_detector_direction, "Up") + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.sensitivity, 10) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_number, 5) + self.assertEqual(updated.whole_series_detection_condition.smart_detection_condition.suppress_condition.min_ratio, 2) + self.assertEqual(updated.whole_series_detection_condition.cross_conditions_operator, "OR") + finally: + self.admin_client.delete_data_feed(data_feed.id) + + def test_update_detection_config_by_resetting_properties(self): + try: + detection_config, data_feed = self._create_detection_config_for_update("updatedetection") + + updated = self.admin_client.update_metric_anomaly_detection_configuration( + detection_config.id, + name="reset", + description="", + # series_detection_conditions=None, + # series_group_detection_conditions=None + ) + + self.assertEqual(updated.name, "reset") + self.assertEqual(updated.description, "") # currently won't update with None + + # service bug says these are required + # self.assertEqual(updated.series_detection_conditions, None) + # self.assertEqual(updated.series_group_detection_conditions, None) + + finally: + self.admin_client.delete_data_feed(data_feed.id) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_metrics_advisor_client_live.py b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_metrics_advisor_client_live.py new file mode 100644 index 000000000000..16db689ddadf --- /dev/null +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/tests/test_metrics_advisor_client_live.py @@ -0,0 +1,163 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +from azure.core import MatchConditions +from devtools_testutils import AzureMgmtTestCase +from azure.core.exceptions import ( + ResourceModifiedError, + ResourceNotFoundError, + ResourceExistsError, + AzureError, +) +from azure.ai.metricsadvisor.models import ( + AnomalyFeedback, + ChangePointFeedback, + CommentFeedback, + PeriodFeedback, +) +import pytest +import datetime +import os +from base_testcase import TestMetricsAdvisorClientBase + +class TestMetricsAdvisorClient(TestMetricsAdvisorClientBase): + def test_list_anomalies_for_detection_configuration(self): + results = list(self.client.list_anomalies_for_detection_configuration( + detection_configuration_id=self.anomaly_detection_configuration_id, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + )) + assert len(results) > 0 + + def test_list_dimension_values_for_detection_configuration(self): + results = list(self.client.list_dimension_values_for_detection_configuration( + detection_configuration_id=self.anomaly_detection_configuration_id, + dimension_name=self.dimension_name, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + )) + assert len(results) > 0 + + def test_list_incidents_for_detection_configuration(self): + results = list(self.client.list_incidents_for_detection_configuration( + detection_configuration_id=self.anomaly_detection_configuration_id, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + )) + assert len(results) > 0 + + def test_list_metric_dimension_values(self): + results = list(self.client.list_metric_dimension_values( + metric_id=self.metric_id, + dimension_name=self.dimension_name, + )) + assert len(results) > 0 + + def test_list_incident_root_cause(self): + results = list(self.client.list_incident_root_causes( + detection_configuration_id=self.anomaly_detection_configuration_id, + incident_id=self.incident_id, + )) + assert len(results) == 0 + + def test_list_metric_enriched_series_data(self): + series_identity = {"city":"city"} + results = list(self.client.list_metric_enriched_series_data( + detection_configuration_id=self.anomaly_detection_configuration_id, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + series=[series_identity] + )) + assert len(results) > 0 + + def test_list_metric_enrichment_status(self): + results = list(self.client.list_metric_enrichment_status( + metric_id=self.metric_id, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + )) + assert len(results) > 0 + + def test_list_alerts_for_alert_configuration(self): + results = list(self.client.list_alerts_for_alert_configuration( + alert_configuration_id=self.anomaly_alert_configuration_id, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + time_mode="AnomalyTime", + )) + assert len(list(results)) > 0 + + def test_list_metrics_series_data(self): + results = list(self.client.list_metrics_series_data( + metric_id=self.metric_id, + start_time=datetime.datetime(2020, 1, 1), + end_time=datetime.datetime(2020, 9, 9), + filter=[ + {"city": "Mumbai", "category": "Shoes Handbags & Sunglasses"} + ] + )) + assert len(results) > 0 + + def test_list_metric_series_definitions(self): + results = list(self.client.list_metric_series_definitions( + metric_id=self.metric_id, + active_since=datetime.datetime(2020, 1, 1), + )) + assert len(results) > 0 + + def test_add_anomaly_feedback(self): + anomaly_feedback = AnomalyFeedback(metric_id=self.metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + value="NotAnomaly") + self.client.add_feedback(anomaly_feedback) + + def test_add_change_point_feedback(self): + change_point_feedback = ChangePointFeedback(metric_id=self.metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + value="NotChangePoint") + self.client.add_feedback(change_point_feedback) + + def test_add_comment_feedback(self): + comment_feedback = CommentFeedback(metric_id=self.metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + value="comment") + self.client.add_feedback(comment_feedback) + + def test_add_period_feedback(self): + period_feedback = PeriodFeedback(metric_id=self.metric_id, + dimension_key={"Dim1": "Common Lime"}, + start_time=datetime.datetime(2020, 8, 5), + end_time=datetime.datetime(2020, 8, 7), + period_type="AssignValue", + value=2) + self.client.add_feedback(period_feedback) + + def test_list_feedbacks(self): + results = list(self.client.list_feedbacks(metric_id=self.metric_id)) + assert len(results) > 0 + + def test_get_feedback(self): + result = self.client.get_feedback(feedback_id=self.feedback_id) + assert result + + def test_list_anomalies_for_alert(self): + result = list(self.client.list_anomalies_for_alert( + alert_configuration_id=self.anomaly_alert_configuration_id, + alert_id=self.alert_id, + )) + assert len(result) > 0 + + def test_list_incidents_for_alert(self): + results = list(self.client.list_incidents_for_alert( + alert_configuration_id=self.anomaly_alert_configuration_id, + alert_id=self.alert_id, + )) + assert len(results) > 0 diff --git a/sdk/metricsadvisor/ci.yml b/sdk/metricsadvisor/ci.yml new file mode 100644 index 000000000000..7712f0c78fda --- /dev/null +++ b/sdk/metricsadvisor/ci.yml @@ -0,0 +1,36 @@ +# DO NOT EDIT THIS FILE +# This file is generated automatically and any changes will be lost. + +trigger: + branches: + include: + - master + - hotfix/* + - release/* + - restapi* + paths: + include: + - sdk/metricsadvisor/ + - sdk/core/ + +pr: + branches: + include: + - master + - feature/* + - hotfix/* + - release/* + - restapi* + paths: + include: + - sdk/metricsadvisor/ + - sdk/core/ + +extends: + template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml + parameters: + ServiceDirectory: metricsadvisor + Artifacts: + - name: azure_ai_metricsadvisor + safeName: azureaimetricsadvisor + diff --git a/shared_requirements.txt b/shared_requirements.txt index 69a0b7a8b37f..0314e2ee41de 100644 --- a/shared_requirements.txt +++ b/shared_requirements.txt @@ -168,3 +168,5 @@ opentelemetry-api==0.10b0 #override azure-communication-chat msrest>=0.6.0 #override azure-communication-sms msrest>=0.6.0 #override azure-communication-administration msrest>=0.6.0 +#override azure-ai-metricsadvisor azure-core<2.0.0,>=1.6.0 +#override azure-ai-metricsadvisor msrest>=0.6.12