From 315b06191a8fbc0093278c9bd083e0092c7364d3 Mon Sep 17 00:00:00 2001 From: API Team Date: Thu, 10 Sep 2026 16:54:07 +0000 Subject: [PATCH] [GitHub Bot] Generated python SDK --- thousandeyes-sdk-administrative/README.md | 2 +- thousandeyes-sdk-agents/README.md | 2 +- thousandeyes-sdk-alerts/README.md | 2 +- thousandeyes-sdk-bgp-monitors/README.md | 2 +- thousandeyes-sdk-bgp-updates/README.md | 2 +- .../README.md | 2 +- thousandeyes-sdk-connectors/README.md | 2 +- thousandeyes-sdk-credentials/README.md | 2 +- thousandeyes-sdk-dashboards/README.md | 2 +- thousandeyes-sdk-emulation/README.md | 2 +- .../.openapi-generator/FILES | 4 + thousandeyes-sdk-endpoint-agents/README.md | 4 +- .../docs/AgentExplainabilityFailure.md | 30 +++ .../docs/DeploymentInfoItem.md | 31 +++ .../docs/EndpointAgent.md | 2 + .../endpoint_agents/__init__.py | 2 + .../endpoint_agents/models/__init__.py | 2 + .../models/agent_explainability_failure.py | 87 +++++++++ .../models/deployment_info_item.py | 89 +++++++++ .../endpoint_agents/models/endpoint_agent.py | 26 ++- .../test/mock_manifest.py | 144 ++++++++++++++ .../test/test_endpoint_agents_api.py | 144 ++++++++++++++ .../test_endpoint_agents_api_integration.py | 144 ++++++++++++++ .../README.md | 2 +- thousandeyes-sdk-endpoint-labels/README.md | 2 +- .../README.md | 2 +- thousandeyes-sdk-endpoint-tests/README.md | 2 +- thousandeyes-sdk-event-detection/README.md | 2 +- thousandeyes-sdk-instant-tests/README.md | 2 +- thousandeyes-sdk-internet-insights/README.md | 2 +- thousandeyes-sdk-snapshots/README.md | 2 +- .../.openapi-generator/FILES | 20 ++ thousandeyes-sdk-streaming/README.md | 12 +- thousandeyes-sdk-streaming/docs/Filters.md | 4 +- .../docs/FiltersAttributes.md | 30 +++ .../FiltersAttributesExcludedAttributes.md | 29 +++ .../docs/FiltersMetrics.md | 30 +++ .../docs/FiltersMetricsExcludedMetrics.md | 29 +++ .../docs/V1MetricAttributeFilterName.md | 11 ++ .../docs/V1MetricFilterName.md | 11 ++ .../docs/V2LogAttributeFilterName.md | 11 ++ .../docs/V2MetricAttributeFilterName.md | 11 ++ .../docs/V2MetricFilterName.md | 11 ++ .../docs/V2TraceAttributeFilterName.md | 11 ++ .../thousandeyes_sdk/streaming/__init__.py | 10 + .../streaming/models/__init__.py | 10 + .../streaming/models/filters.py | 18 +- .../streaming/models/filters_attributes.py | 91 +++++++++ .../filters_attributes_excluded_attributes.py | 179 ++++++++++++++++++ .../streaming/models/filters_metrics.py | 91 +++++++++ .../filters_metrics_excluded_metrics.py | 143 ++++++++++++++ .../streaming/models/filters_test_types.py | 3 +- .../models/v1_metric_attribute_filter_name.py | 92 +++++++++ .../streaming/models/v1_metric_filter_name.py | 72 +++++++ .../models/v2_log_attribute_filter_name.py | 46 +++++ .../models/v2_metric_attribute_filter_name.py | 109 +++++++++++ .../streaming/models/v2_metric_filter_name.py | 99 ++++++++++ .../models/v2_trace_attribute_filter_name.py | 77 ++++++++ .../test/mock_manifest.py | 42 ++++ .../test/test_streaming_api.py | 42 ++++ .../test/test_streaming_api_integration.py | 84 ++++++++ thousandeyes-sdk-tags/README.md | 2 +- thousandeyes-sdk-test-results/README.md | 2 +- thousandeyes-sdk-tests/README.md | 2 +- thousandeyes-sdk-usage/README.md | 2 +- 65 files changed, 2151 insertions(+), 30 deletions(-) create mode 100644 thousandeyes-sdk-endpoint-agents/docs/AgentExplainabilityFailure.md create mode 100644 thousandeyes-sdk-endpoint-agents/docs/DeploymentInfoItem.md create mode 100644 thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/agent_explainability_failure.py create mode 100644 thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/deployment_info_item.py create mode 100644 thousandeyes-sdk-streaming/docs/FiltersAttributes.md create mode 100644 thousandeyes-sdk-streaming/docs/FiltersAttributesExcludedAttributes.md create mode 100644 thousandeyes-sdk-streaming/docs/FiltersMetrics.md create mode 100644 thousandeyes-sdk-streaming/docs/FiltersMetricsExcludedMetrics.md create mode 100644 thousandeyes-sdk-streaming/docs/V1MetricAttributeFilterName.md create mode 100644 thousandeyes-sdk-streaming/docs/V1MetricFilterName.md create mode 100644 thousandeyes-sdk-streaming/docs/V2LogAttributeFilterName.md create mode 100644 thousandeyes-sdk-streaming/docs/V2MetricAttributeFilterName.md create mode 100644 thousandeyes-sdk-streaming/docs/V2MetricFilterName.md create mode 100644 thousandeyes-sdk-streaming/docs/V2TraceAttributeFilterName.md create mode 100644 thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_attributes.py create mode 100644 thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_attributes_excluded_attributes.py create mode 100644 thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_metrics.py create mode 100644 thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_metrics_excluded_metrics.py create mode 100644 thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v1_metric_attribute_filter_name.py create mode 100644 thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v1_metric_filter_name.py create mode 100644 thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_log_attribute_filter_name.py create mode 100644 thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_metric_attribute_filter_name.py create mode 100644 thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_metric_filter_name.py create mode 100644 thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_trace_attribute_filter_name.py diff --git a/thousandeyes-sdk-administrative/README.md b/thousandeyes-sdk-administrative/README.md index 028ce969..88b6d21d 100644 --- a/thousandeyes-sdk-administrative/README.md +++ b/thousandeyes-sdk-administrative/README.md @@ -12,7 +12,7 @@ This API provides the following operations to manage your organization: This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-agents/README.md b/thousandeyes-sdk-agents/README.md index e78c7380..93ff690c 100644 --- a/thousandeyes-sdk-agents/README.md +++ b/thousandeyes-sdk-agents/README.md @@ -5,7 +5,7 @@ Manage Cloud and Enterprise Agents available to your account in ThousandEyes. This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-alerts/README.md b/thousandeyes-sdk-alerts/README.md index 5ad24f8e..96c15442 100644 --- a/thousandeyes-sdk-alerts/README.md +++ b/thousandeyes-sdk-alerts/README.md @@ -14,7 +14,7 @@ For more information about the alerts, see [Alerts](https://docs.thousandeyes.co This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-bgp-monitors/README.md b/thousandeyes-sdk-bgp-monitors/README.md index 8e1a4c42..6e3ec6c6 100644 --- a/thousandeyes-sdk-bgp-monitors/README.md +++ b/thousandeyes-sdk-bgp-monitors/README.md @@ -10,7 +10,7 @@ For more information about monitors, see [Inside-Out BGP Visibility](https://doc This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-bgp-updates/README.md b/thousandeyes-sdk-bgp-updates/README.md index 5ea1cec4..c0aaa002 100644 --- a/thousandeyes-sdk-bgp-updates/README.md +++ b/thousandeyes-sdk-bgp-updates/README.md @@ -3,7 +3,7 @@ Retrieve BGP updates observed by BGP monitors tracking prefixes in your Thousand This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-cloud-insights-integrations/README.md b/thousandeyes-sdk-cloud-insights-integrations/README.md index abe6fd32..2dab175e 100644 --- a/thousandeyes-sdk-cloud-insights-integrations/README.md +++ b/thousandeyes-sdk-cloud-insights-integrations/README.md @@ -73,7 +73,7 @@ For more information about Cloud Insights, see [Cloud Insights](https://docs.tho This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-connectors/README.md b/thousandeyes-sdk-connectors/README.md index 28696841..6ec805f3 100644 --- a/thousandeyes-sdk-connectors/README.md +++ b/thousandeyes-sdk-connectors/README.md @@ -6,7 +6,7 @@ Manage connectors and operations. This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-credentials/README.md b/thousandeyes-sdk-credentials/README.md index b9847e16..5b721e89 100644 --- a/thousandeyes-sdk-credentials/README.md +++ b/thousandeyes-sdk-credentials/README.md @@ -13,7 +13,7 @@ For more information about credentials, see [Working With Secure Credentials](ht This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-dashboards/README.md b/thousandeyes-sdk-dashboards/README.md index e97fbf7e..07b4da25 100644 --- a/thousandeyes-sdk-dashboards/README.md +++ b/thousandeyes-sdk-dashboards/README.md @@ -3,7 +3,7 @@ Manage ThousandEyes Dashboards. This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-emulation/README.md b/thousandeyes-sdk-emulation/README.md index 28e82685..d42b1818 100644 --- a/thousandeyes-sdk-emulation/README.md +++ b/thousandeyes-sdk-emulation/README.md @@ -11,7 +11,7 @@ To access Emulation API operations, the following permissions are required: This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-endpoint-agents/.openapi-generator/FILES b/thousandeyes-sdk-endpoint-agents/.openapi-generator/FILES index 4fc8376d..66aa2a26 100644 --- a/thousandeyes-sdk-endpoint-agents/.openapi-generator/FILES +++ b/thousandeyes-sdk-endpoint-agents/.openapi-generator/FILES @@ -3,6 +3,7 @@ MANIFEST.in README.md docs/AddressProfile.md docs/AddressType.md +docs/AgentExplainabilityFailure.md docs/AgentLicenseType.md docs/AgentSearchFilters.md docs/AgentSearchRequest.md @@ -21,6 +22,7 @@ docs/BulkAgentTransferResponse.md docs/CellularProfile.md docs/ConditionalOperator.md docs/ConnectionString.md +docs/DeploymentInfoItem.md docs/EndpointAgent.md docs/EndpointAgentEthernetProfile.md docs/EndpointAgentLocation.md @@ -84,6 +86,7 @@ src/thousandeyes_sdk/endpoint_agents/api/endpoint_proxies_api.py src/thousandeyes_sdk/endpoint_agents/models/__init__.py src/thousandeyes_sdk/endpoint_agents/models/address_profile.py src/thousandeyes_sdk/endpoint_agents/models/address_type.py +src/thousandeyes_sdk/endpoint_agents/models/agent_explainability_failure.py src/thousandeyes_sdk/endpoint_agents/models/agent_license_type.py src/thousandeyes_sdk/endpoint_agents/models/agent_search_filters.py src/thousandeyes_sdk/endpoint_agents/models/agent_search_request.py @@ -102,6 +105,7 @@ src/thousandeyes_sdk/endpoint_agents/models/bulk_agent_transfer_response.py src/thousandeyes_sdk/endpoint_agents/models/cellular_profile.py src/thousandeyes_sdk/endpoint_agents/models/conditional_operator.py src/thousandeyes_sdk/endpoint_agents/models/connection_string.py +src/thousandeyes_sdk/endpoint_agents/models/deployment_info_item.py src/thousandeyes_sdk/endpoint_agents/models/endpoint_agent.py src/thousandeyes_sdk/endpoint_agents/models/endpoint_agent_ethernet_profile.py src/thousandeyes_sdk/endpoint_agents/models/endpoint_agent_location.py diff --git a/thousandeyes-sdk-endpoint-agents/README.md b/thousandeyes-sdk-endpoint-agents/README.md index 813e42e7..072b128a 100644 --- a/thousandeyes-sdk-endpoint-agents/README.md +++ b/thousandeyes-sdk-endpoint-agents/README.md @@ -7,7 +7,7 @@ For more information about Endpoint Agents, see [Endpoint Agents](https://docs.t This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator @@ -122,6 +122,7 @@ Class | Method | HTTP request | Description - [AddressProfile](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/AddressProfile.md) - [AddressType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/AddressType.md) + - [AgentExplainabilityFailure](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/AgentExplainabilityFailure.md) - [AgentLicenseType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/AgentLicenseType.md) - [AgentSearchFilters](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/AgentSearchFilters.md) - [AgentSearchRequest](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/AgentSearchRequest.md) @@ -140,6 +141,7 @@ Class | Method | HTTP request | Description - [CellularProfile](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/CellularProfile.md) - [ConditionalOperator](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/ConditionalOperator.md) - [ConnectionString](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/ConnectionString.md) + - [DeploymentInfoItem](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/DeploymentInfoItem.md) - [EndpointAgent](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/EndpointAgent.md) - [EndpointAgentEthernetProfile](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/EndpointAgentEthernetProfile.md) - [EndpointAgentLocation](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/EndpointAgentLocation.md) diff --git a/thousandeyes-sdk-endpoint-agents/docs/AgentExplainabilityFailure.md b/thousandeyes-sdk-endpoint-agents/docs/AgentExplainabilityFailure.md new file mode 100644 index 00000000..5a0d6bfa --- /dev/null +++ b/thousandeyes-sdk-endpoint-agents/docs/AgentExplainabilityFailure.md @@ -0,0 +1,30 @@ +# AgentExplainabilityFailure + +A machine-readable explanation for an endpoint agent collection failure. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**reason_code** | **str** | Failure reason reported by the agent. New reason codes may be introduced over time. | + +## Example + +```python +from thousandeyes_sdk.endpoint_agents.models.agent_explainability_failure import AgentExplainabilityFailure + +# TODO update the JSON string below +json = "{}" +# create an instance of AgentExplainabilityFailure from a JSON string +agent_explainability_failure_instance = AgentExplainabilityFailure.from_json(json) +# print the JSON string representation of the object +print(AgentExplainabilityFailure.to_json()) + +# convert the object into a dict +agent_explainability_failure_dict = agent_explainability_failure_instance.to_dict() +# create an instance of AgentExplainabilityFailure from a dict +agent_explainability_failure_from_dict = AgentExplainabilityFailure.from_dict(agent_explainability_failure_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/thousandeyes-sdk-endpoint-agents/docs/DeploymentInfoItem.md b/thousandeyes-sdk-endpoint-agents/docs/DeploymentInfoItem.md new file mode 100644 index 00000000..d79750a1 --- /dev/null +++ b/thousandeyes-sdk-endpoint-agents/docs/DeploymentInfoItem.md @@ -0,0 +1,31 @@ +# DeploymentInfoItem + +A key-value entry containing deployment metadata reported by the endpoint agent. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**key** | **str** | Name of the deployment metadata item. | +**value** | **str** | Agent-reported value associated with `key`. | + +## Example + +```python +from thousandeyes_sdk.endpoint_agents.models.deployment_info_item import DeploymentInfoItem + +# TODO update the JSON string below +json = "{}" +# create an instance of DeploymentInfoItem from a JSON string +deployment_info_item_instance = DeploymentInfoItem.from_json(json) +# print the JSON string representation of the object +print(DeploymentInfoItem.to_json()) + +# convert the object into a dict +deployment_info_item_dict = deployment_info_item_instance.to_dict() +# create an instance of DeploymentInfoItem from a dict +deployment_info_item_from_dict = DeploymentInfoItem.from_dict(deployment_info_item_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/thousandeyes-sdk-endpoint-agents/docs/EndpointAgent.md b/thousandeyes-sdk-endpoint-agents/docs/EndpointAgent.md index 1ce970c8..ad3f96c3 100644 --- a/thousandeyes-sdk-endpoint-agents/docs/EndpointAgent.md +++ b/thousandeyes-sdk-endpoint-agents/docs/EndpointAgent.md @@ -33,6 +33,8 @@ Name | Type | Description | Notes **agent_type** | **str** | | [optional] [readonly] **vpn_profiles** | [**List[EndpointVpnProfile]**](EndpointVpnProfile.md) | List of VPN connections on the agent. Not populated by default. | [optional] [readonly] **external_metadata** | [**List[ExternalMetadataItem]**](ExternalMetadataItem.md) | List of external metadata assigned to the endpoint agent. Visible only if the `expandAgent=externalMetadata` query parameter is included. | [optional] +**agent_explainability_failures** | [**List[AgentExplainabilityFailure]**](AgentExplainabilityFailure.md) | Current failures reported by the agent. An empty list means no current failures. | [optional] [readonly] +**deployment_info** | [**List[DeploymentInfoItem]**](DeploymentInfoItem.md) | Included when the agent has reported deployment metadata. | [optional] [readonly] **network_interface_profiles** | [**List[InterfaceProfile]**](InterfaceProfile.md) | List of network interfaces on the agent. Not populated by default. | [optional] [readonly] **asn_details** | [**EndpointAsnDetails**](EndpointAsnDetails.md) | | [optional] **license_type** | [**AgentLicenseType**](AgentLicenseType.md) | | [optional] diff --git a/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/__init__.py b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/__init__.py index c64c9c0d..16cd4679 100644 --- a/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/__init__.py +++ b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/__init__.py @@ -23,6 +23,7 @@ from thousandeyes_sdk.endpoint_agents.api.endpoint_proxies_api import EndpointPr # import models into sdk package from thousandeyes_sdk.endpoint_agents.models.address_profile import AddressProfile from thousandeyes_sdk.endpoint_agents.models.address_type import AddressType +from thousandeyes_sdk.endpoint_agents.models.agent_explainability_failure import AgentExplainabilityFailure from thousandeyes_sdk.endpoint_agents.models.agent_license_type import AgentLicenseType from thousandeyes_sdk.endpoint_agents.models.agent_search_filters import AgentSearchFilters from thousandeyes_sdk.endpoint_agents.models.agent_search_request import AgentSearchRequest @@ -41,6 +42,7 @@ from thousandeyes_sdk.endpoint_agents.models.bulk_agent_transfer_response import from thousandeyes_sdk.endpoint_agents.models.cellular_profile import CellularProfile from thousandeyes_sdk.endpoint_agents.models.conditional_operator import ConditionalOperator from thousandeyes_sdk.endpoint_agents.models.connection_string import ConnectionString +from thousandeyes_sdk.endpoint_agents.models.deployment_info_item import DeploymentInfoItem from thousandeyes_sdk.endpoint_agents.models.endpoint_agent import EndpointAgent from thousandeyes_sdk.endpoint_agents.models.endpoint_agent_ethernet_profile import EndpointAgentEthernetProfile from thousandeyes_sdk.endpoint_agents.models.endpoint_agent_location import EndpointAgentLocation diff --git a/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/__init__.py b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/__init__.py index 8689e656..2d09e1e0 100644 --- a/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/__init__.py +++ b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/__init__.py @@ -15,6 +15,7 @@ # import models into model package from thousandeyes_sdk.endpoint_agents.models.address_profile import AddressProfile from thousandeyes_sdk.endpoint_agents.models.address_type import AddressType +from thousandeyes_sdk.endpoint_agents.models.agent_explainability_failure import AgentExplainabilityFailure from thousandeyes_sdk.endpoint_agents.models.agent_license_type import AgentLicenseType from thousandeyes_sdk.endpoint_agents.models.agent_search_filters import AgentSearchFilters from thousandeyes_sdk.endpoint_agents.models.agent_search_request import AgentSearchRequest @@ -33,6 +34,7 @@ from thousandeyes_sdk.endpoint_agents.models.bulk_agent_transfer_response import from thousandeyes_sdk.endpoint_agents.models.cellular_profile import CellularProfile from thousandeyes_sdk.endpoint_agents.models.conditional_operator import ConditionalOperator from thousandeyes_sdk.endpoint_agents.models.connection_string import ConnectionString +from thousandeyes_sdk.endpoint_agents.models.deployment_info_item import DeploymentInfoItem from thousandeyes_sdk.endpoint_agents.models.endpoint_agent import EndpointAgent from thousandeyes_sdk.endpoint_agents.models.endpoint_agent_ethernet_profile import EndpointAgentEthernetProfile from thousandeyes_sdk.endpoint_agents.models.endpoint_agent_location import EndpointAgentLocation diff --git a/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/agent_explainability_failure.py b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/agent_explainability_failure.py new file mode 100644 index 00000000..d70a7da7 --- /dev/null +++ b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/agent_explainability_failure.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" + Endpoint Agents API + + **Note:** The Endpoint Agents Transfer APIs are not available for ThousandEyes for Government instance. Manage ThousandEyes Endpoint Agents using this API. For more information about Endpoint Agents, see [Endpoint Agents](https://docs.thousandeyes.com/product-documentation/global-vantage-points/endpoint-agents). + + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + +class AgentExplainabilityFailure(BaseModel): + """ + A machine-readable explanation for an endpoint agent collection failure. + """ # noqa: E501 + reason_code: StrictStr = Field(description="Failure reason reported by the agent. New reason codes may be introduced over time.", alias="reasonCode") + __properties: ClassVar[List[str]] = ["reasonCode"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + extra="allow", + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return self.model_dump_json(by_alias=True, exclude_unset=True, exclude_none=True) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AgentExplainabilityFailure from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AgentExplainabilityFailure from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "reasonCode": obj.get("reasonCode") + }) + return _obj + + diff --git a/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/deployment_info_item.py b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/deployment_info_item.py new file mode 100644 index 00000000..8481ee8b --- /dev/null +++ b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/deployment_info_item.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" + Endpoint Agents API + + **Note:** The Endpoint Agents Transfer APIs are not available for ThousandEyes for Government instance. Manage ThousandEyes Endpoint Agents using this API. For more information about Endpoint Agents, see [Endpoint Agents](https://docs.thousandeyes.com/product-documentation/global-vantage-points/endpoint-agents). + + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + +class DeploymentInfoItem(BaseModel): + """ + A key-value entry containing deployment metadata reported by the endpoint agent. + """ # noqa: E501 + key: StrictStr = Field(description="Name of the deployment metadata item.") + value: StrictStr = Field(description="Agent-reported value associated with `key`.") + __properties: ClassVar[List[str]] = ["key", "value"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + extra="allow", + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return self.model_dump_json(by_alias=True, exclude_unset=True, exclude_none=True) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of DeploymentInfoItem from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of DeploymentInfoItem from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "key": obj.get("key"), + "value": obj.get("value") + }) + return _obj + + diff --git a/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/endpoint_agent.py b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/endpoint_agent.py index 51337159..edc366af 100644 --- a/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/endpoint_agent.py +++ b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/endpoint_agent.py @@ -20,9 +20,11 @@ from datetime import datetime from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional, Union from typing_extensions import Annotated +from thousandeyes_sdk.endpoint_agents.models.agent_explainability_failure import AgentExplainabilityFailure from thousandeyes_sdk.endpoint_agents.models.agent_license_type import AgentLicenseType from thousandeyes_sdk.endpoint_agents.models.battery_metrics import BatteryMetrics from thousandeyes_sdk.endpoint_agents.models.cellular_profile import CellularProfile +from thousandeyes_sdk.endpoint_agents.models.deployment_info_item import DeploymentInfoItem from thousandeyes_sdk.endpoint_agents.models.endpoint_agent_location import EndpointAgentLocation from thousandeyes_sdk.endpoint_agents.models.endpoint_asn_details import EndpointAsnDetails from thousandeyes_sdk.endpoint_agents.models.endpoint_client import EndpointClient @@ -66,6 +68,8 @@ class EndpointAgent(BaseModel): agent_type: Optional[StrictStr] = Field(default=None, alias="agentType") vpn_profiles: Optional[List[EndpointVpnProfile]] = Field(default=None, description="List of VPN connections on the agent. Not populated by default. ", alias="vpnProfiles") external_metadata: Optional[List[ExternalMetadataItem]] = Field(default=None, description="List of external metadata assigned to the endpoint agent. Visible only if the `expandAgent=externalMetadata` query parameter is included. ", alias="externalMetadata") + agent_explainability_failures: Optional[List[AgentExplainabilityFailure]] = Field(default=None, description="Current failures reported by the agent. An empty list means no current failures.", alias="agentExplainabilityFailures") + deployment_info: Optional[List[DeploymentInfoItem]] = Field(default=None, description="Included when the agent has reported deployment metadata.", alias="deploymentInfo") network_interface_profiles: Optional[List[InterfaceProfile]] = Field(default=None, description="List of network interfaces on the agent. Not populated by default. ", alias="networkInterfaceProfiles") asn_details: Optional[EndpointAsnDetails] = Field(default=None, alias="asnDetails") license_type: Optional[AgentLicenseType] = Field(default=None, alias="licenseType") @@ -74,7 +78,7 @@ class EndpointAgent(BaseModel): battery_metrics: Optional[BatteryMetrics] = Field(default=None, alias="batteryMetrics") cellular_profile: Optional[CellularProfile] = Field(default=None, alias="cellularProfile") links: Optional[SelfLinks] = Field(default=None, alias="_links") - __properties: ClassVar[List[str]] = ["id", "aid", "name", "computerName", "freeDiskSpaceNormalized", "osVersion", "platform", "kernelVersion", "manufacturer", "model", "nicDriverVersion", "nicModel", "serialNumber", "lastSeen", "status", "deleted", "version", "targetVersion", "createdAt", "numberOfClients", "publicIP", "location", "clients", "totalMemory", "agentType", "vpnProfiles", "externalMetadata", "networkInterfaceProfiles", "asnDetails", "licenseType", "tcpDriverAvailable", "npcapVersion", "batteryMetrics", "cellularProfile", "_links"] + __properties: ClassVar[List[str]] = ["id", "aid", "name", "computerName", "freeDiskSpaceNormalized", "osVersion", "platform", "kernelVersion", "manufacturer", "model", "nicDriverVersion", "nicModel", "serialNumber", "lastSeen", "status", "deleted", "version", "targetVersion", "createdAt", "numberOfClients", "publicIP", "location", "clients", "totalMemory", "agentType", "vpnProfiles", "externalMetadata", "agentExplainabilityFailures", "deploymentInfo", "networkInterfaceProfiles", "asnDetails", "licenseType", "tcpDriverAvailable", "npcapVersion", "batteryMetrics", "cellularProfile", "_links"] model_config = ConfigDict( populate_by_name=True, @@ -131,6 +135,8 @@ class EndpointAgent(BaseModel): * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. + * OpenAPI `readOnly` fields are excluded. """ excluded_fields: Set[str] = set([ "id", @@ -154,6 +160,8 @@ class EndpointAgent(BaseModel): "total_memory", "agent_type", "vpn_profiles", + "agent_explainability_failures", + "deployment_info", "network_interface_profiles", "tcp_driver_available", "npcap_version", @@ -188,6 +196,20 @@ class EndpointAgent(BaseModel): if _item: _items.append(_item.to_dict()) _dict['externalMetadata'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in agent_explainability_failures (list) + _items = [] + if self.agent_explainability_failures: + for _item in self.agent_explainability_failures: + if _item: + _items.append(_item.to_dict()) + _dict['agentExplainabilityFailures'] = _items + # override the default output from pydantic by calling `to_dict()` of each item in deployment_info (list) + _items = [] + if self.deployment_info: + for _item in self.deployment_info: + if _item: + _items.append(_item.to_dict()) + _dict['deploymentInfo'] = _items # override the default output from pydantic by calling `to_dict()` of each item in network_interface_profiles (list) _items = [] if self.network_interface_profiles: @@ -261,6 +283,8 @@ class EndpointAgent(BaseModel): "agentType": obj.get("agentType"), "vpnProfiles": [EndpointVpnProfile.from_dict(_item) for _item in obj["vpnProfiles"]] if obj.get("vpnProfiles") is not None else None, "externalMetadata": [ExternalMetadataItem.from_dict(_item) for _item in obj["externalMetadata"]] if obj.get("externalMetadata") is not None else None, + "agentExplainabilityFailures": [AgentExplainabilityFailure.from_dict(_item) for _item in obj["agentExplainabilityFailures"]] if obj.get("agentExplainabilityFailures") is not None else None, + "deploymentInfo": [DeploymentInfoItem.from_dict(_item) for _item in obj["deploymentInfo"]] if obj.get("deploymentInfo") is not None else None, "networkInterfaceProfiles": [InterfaceProfile.from_dict(_item) for _item in obj["networkInterfaceProfiles"]] if obj.get("networkInterfaceProfiles") is not None else None, "asnDetails": EndpointAsnDetails.from_dict(obj["asnDetails"]) if obj.get("asnDetails") is not None else None, "licenseType": obj.get("licenseType"), diff --git a/thousandeyes-sdk-endpoint-agents/test/mock_manifest.py b/thousandeyes-sdk-endpoint-agents/test/mock_manifest.py index a40bfd24..c59b0148 100644 --- a/thousandeyes-sdk-endpoint-agents/test/mock_manifest.py +++ b/thousandeyes-sdk-endpoint-agents/test/mock_manifest.py @@ -398,6 +398,11 @@ OPERATION_MANIFEST = { "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -408,6 +413,19 @@ OPERATION_MANIFEST = { "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -648,6 +666,11 @@ OPERATION_MANIFEST = { "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -658,6 +681,19 @@ OPERATION_MANIFEST = { "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -911,6 +947,11 @@ OPERATION_MANIFEST = { "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -921,6 +962,19 @@ OPERATION_MANIFEST = { "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -1090,6 +1144,11 @@ OPERATION_MANIFEST = { "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -1100,6 +1159,19 @@ OPERATION_MANIFEST = { "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -1391,6 +1463,11 @@ OPERATION_MANIFEST = { "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -1401,6 +1478,19 @@ OPERATION_MANIFEST = { "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -1664,6 +1754,11 @@ OPERATION_MANIFEST = { "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -1674,6 +1769,19 @@ OPERATION_MANIFEST = { "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -1843,6 +1951,11 @@ OPERATION_MANIFEST = { "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -1853,6 +1966,19 @@ OPERATION_MANIFEST = { "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -2152,6 +2278,11 @@ OPERATION_MANIFEST = { "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -2162,6 +2293,19 @@ OPERATION_MANIFEST = { "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { diff --git a/thousandeyes-sdk-endpoint-agents/test/test_endpoint_agents_api.py b/thousandeyes-sdk-endpoint-agents/test/test_endpoint_agents_api.py index 2cbdefac..7872dc3c 100644 --- a/thousandeyes-sdk-endpoint-agents/test/test_endpoint_agents_api.py +++ b/thousandeyes-sdk-endpoint-agents/test/test_endpoint_agents_api.py @@ -152,6 +152,11 @@ class TestEndpointAgentsApi(unittest.TestCase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -162,6 +167,19 @@ class TestEndpointAgentsApi(unittest.TestCase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -343,6 +361,11 @@ class TestEndpointAgentsApi(unittest.TestCase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -353,6 +376,19 @@ class TestEndpointAgentsApi(unittest.TestCase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -592,6 +628,11 @@ class TestEndpointAgentsApi(unittest.TestCase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -602,6 +643,19 @@ class TestEndpointAgentsApi(unittest.TestCase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -771,6 +825,11 @@ class TestEndpointAgentsApi(unittest.TestCase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -781,6 +840,19 @@ class TestEndpointAgentsApi(unittest.TestCase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -963,6 +1035,11 @@ class TestEndpointAgentsApi(unittest.TestCase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -973,6 +1050,19 @@ class TestEndpointAgentsApi(unittest.TestCase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -1178,6 +1268,11 @@ class TestEndpointAgentsApi(unittest.TestCase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -1188,6 +1283,19 @@ class TestEndpointAgentsApi(unittest.TestCase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -1357,6 +1465,11 @@ class TestEndpointAgentsApi(unittest.TestCase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -1367,6 +1480,19 @@ class TestEndpointAgentsApi(unittest.TestCase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -1585,6 +1711,11 @@ class TestEndpointAgentsApi(unittest.TestCase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -1595,6 +1726,19 @@ class TestEndpointAgentsApi(unittest.TestCase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { diff --git a/thousandeyes-sdk-endpoint-agents/test/test_endpoint_agents_api_integration.py b/thousandeyes-sdk-endpoint-agents/test/test_endpoint_agents_api_integration.py index 6113d42d..4636934d 100644 --- a/thousandeyes-sdk-endpoint-agents/test/test_endpoint_agents_api_integration.py +++ b/thousandeyes-sdk-endpoint-agents/test/test_endpoint_agents_api_integration.py @@ -300,6 +300,11 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -310,6 +315,19 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -609,6 +627,11 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -619,6 +642,19 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -980,6 +1016,11 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -990,6 +1031,19 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -1159,6 +1213,11 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -1169,6 +1228,19 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -1714,6 +1786,11 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -1724,6 +1801,19 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -2091,6 +2181,11 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -2101,6 +2196,19 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -2270,6 +2378,11 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -2280,6 +2393,19 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { @@ -2740,6 +2866,11 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "interfaceName" : "interfaceName", "vpnClientAddresses" : [ "10.100.0.10" ] } ], + "agentExplainabilityFailures" : [ { + "reasonCode" : "dns_failure" + }, { + "reasonCode" : "dns_failure" + } ], "lastSeen" : "2022-05-26T23:37:16Z", "deleted" : true, "totalMemory" : "16384 MB", @@ -2750,6 +2881,19 @@ class TestEndpointAgentsApiIntegration(IntegrationTestBase): "latitude" : 51.51279, "longitude" : -0.09184 }, + "deploymentInfo" : [ { + "key" : "enrollmentType", + "value" : "device_owner" + }, { + "key" : "installMethod", + "value" : "mdm" + }, { + "key" : "mdmVendor", + "value" : "meraki" + }, { + "key" : "oemConfigStatus", + "value" : "applied" + } ], "aid" : "", "status" : "enabled", "networkInterfaceProfiles" : [ { diff --git a/thousandeyes-sdk-endpoint-instant-tests/README.md b/thousandeyes-sdk-endpoint-instant-tests/README.md index 53b9449e..daa6e3ca 100644 --- a/thousandeyes-sdk-endpoint-instant-tests/README.md +++ b/thousandeyes-sdk-endpoint-instant-tests/README.md @@ -12,7 +12,7 @@ The URLs for these API test data endpoints are provided within the test definiti This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-endpoint-labels/README.md b/thousandeyes-sdk-endpoint-labels/README.md index 84b41d8e..47574abb 100644 --- a/thousandeyes-sdk-endpoint-labels/README.md +++ b/thousandeyes-sdk-endpoint-labels/README.md @@ -4,7 +4,7 @@ Manage labels applied to endpoint agents using this API. This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-endpoint-test-results/README.md b/thousandeyes-sdk-endpoint-test-results/README.md index b95ef6db..d917db03 100644 --- a/thousandeyes-sdk-endpoint-test-results/README.md +++ b/thousandeyes-sdk-endpoint-test-results/README.md @@ -3,7 +3,7 @@ Retrieve results for scheduled and dynamic tests on endpoint agents. This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-endpoint-tests/README.md b/thousandeyes-sdk-endpoint-tests/README.md index 619182cb..2022433c 100644 --- a/thousandeyes-sdk-endpoint-tests/README.md +++ b/thousandeyes-sdk-endpoint-tests/README.md @@ -4,7 +4,7 @@ Manage endpoint agent dynamic and scheduled tests using the Endpoint Tests API. This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-event-detection/README.md b/thousandeyes-sdk-event-detection/README.md index ed80f435..d936aea5 100644 --- a/thousandeyes-sdk-event-detection/README.md +++ b/thousandeyes-sdk-event-detection/README.md @@ -11,7 +11,7 @@ With the Events API, you can perform the following tasks on the ThousandEyes pla This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-instant-tests/README.md b/thousandeyes-sdk-instant-tests/README.md index bb92f416..697d92c9 100644 --- a/thousandeyes-sdk-instant-tests/README.md +++ b/thousandeyes-sdk-instant-tests/README.md @@ -6,7 +6,7 @@ The response does not include the immediate test results. Use the Test Results e This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-internet-insights/README.md b/thousandeyes-sdk-internet-insights/README.md index 9dd2b66c..5cea3a1d 100644 --- a/thousandeyes-sdk-internet-insights/README.md +++ b/thousandeyes-sdk-internet-insights/README.md @@ -16,7 +16,7 @@ For more information about Internet Insights, see the [Internet Insights](https: This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-snapshots/README.md b/thousandeyes-sdk-snapshots/README.md index 8d76fb0e..ec749386 100644 --- a/thousandeyes-sdk-snapshots/README.md +++ b/thousandeyes-sdk-snapshots/README.md @@ -3,7 +3,7 @@ Creates a new test snapshot in ThousandEyes. This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-streaming/.openapi-generator/FILES b/thousandeyes-sdk-streaming/.openapi-generator/FILES index 230602a3..487f352b 100644 --- a/thousandeyes-sdk-streaming/.openapi-generator/FILES +++ b/thousandeyes-sdk-streaming/.openapi-generator/FILES @@ -17,6 +17,10 @@ docs/ExporterConfigAuthorization.md docs/ExporterConfigOAuth2.md docs/ExporterConfigSplunkHec.md docs/Filters.md +docs/FiltersAttributes.md +docs/FiltersAttributesExcludedAttributes.md +docs/FiltersMetrics.md +docs/FiltersMetricsExcludedMetrics.md docs/FiltersTestTypes.md docs/GetStreamResponse.md docs/InputConfig.md @@ -36,6 +40,12 @@ docs/TestMatch.md docs/TestMatchDomain.md docs/TestType.md docs/UnauthorizedError.md +docs/V1MetricAttributeFilterName.md +docs/V1MetricFilterName.md +docs/V2LogAttributeFilterName.md +docs/V2MetricAttributeFilterName.md +docs/V2MetricFilterName.md +docs/V2TraceAttributeFilterName.md pyproject.toml setup.cfg src/thousandeyes_sdk/streaming/__init__.py @@ -58,6 +68,10 @@ src/thousandeyes_sdk/streaming/models/exporter_config_authorization.py src/thousandeyes_sdk/streaming/models/exporter_config_o_auth2.py src/thousandeyes_sdk/streaming/models/exporter_config_splunk_hec.py src/thousandeyes_sdk/streaming/models/filters.py +src/thousandeyes_sdk/streaming/models/filters_attributes.py +src/thousandeyes_sdk/streaming/models/filters_attributes_excluded_attributes.py +src/thousandeyes_sdk/streaming/models/filters_metrics.py +src/thousandeyes_sdk/streaming/models/filters_metrics_excluded_metrics.py src/thousandeyes_sdk/streaming/models/filters_test_types.py src/thousandeyes_sdk/streaming/models/get_stream_response.py src/thousandeyes_sdk/streaming/models/input_config.py @@ -76,6 +90,12 @@ src/thousandeyes_sdk/streaming/models/test_match.py src/thousandeyes_sdk/streaming/models/test_match_domain.py src/thousandeyes_sdk/streaming/models/test_type.py src/thousandeyes_sdk/streaming/models/unauthorized_error.py +src/thousandeyes_sdk/streaming/models/v1_metric_attribute_filter_name.py +src/thousandeyes_sdk/streaming/models/v1_metric_filter_name.py +src/thousandeyes_sdk/streaming/models/v2_log_attribute_filter_name.py +src/thousandeyes_sdk/streaming/models/v2_metric_attribute_filter_name.py +src/thousandeyes_sdk/streaming/models/v2_metric_filter_name.py +src/thousandeyes_sdk/streaming/models/v2_trace_attribute_filter_name.py src/thousandeyes_sdk/streaming/py.typed test/__init__.py test/conftest.py diff --git a/thousandeyes-sdk-streaming/README.md b/thousandeyes-sdk-streaming/README.md index b6c1b2e4..15bc2505 100644 --- a/thousandeyes-sdk-streaming/README.md +++ b/thousandeyes-sdk-streaming/README.md @@ -25,7 +25,7 @@ For more information about ThousandEyes for OpenTelemetry, see the [product docu This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator @@ -142,6 +142,10 @@ Class | Method | HTTP request | Description - [ExporterConfigOAuth2](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/ExporterConfigOAuth2.md) - [ExporterConfigSplunkHec](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/ExporterConfigSplunkHec.md) - [Filters](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/Filters.md) + - [FiltersAttributes](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/FiltersAttributes.md) + - [FiltersAttributesExcludedAttributes](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/FiltersAttributesExcludedAttributes.md) + - [FiltersMetrics](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/FiltersMetrics.md) + - [FiltersMetricsExcludedMetrics](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/FiltersMetricsExcludedMetrics.md) - [FiltersTestTypes](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/FiltersTestTypes.md) - [GetStreamResponse](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/GetStreamResponse.md) - [InputConfig](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/InputConfig.md) @@ -160,6 +164,12 @@ Class | Method | HTTP request | Description - [TestMatchDomain](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/TestMatchDomain.md) - [TestType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/TestType.md) - [UnauthorizedError](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/UnauthorizedError.md) + - [V1MetricAttributeFilterName](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/V1MetricAttributeFilterName.md) + - [V1MetricFilterName](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/V1MetricFilterName.md) + - [V2LogAttributeFilterName](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/V2LogAttributeFilterName.md) + - [V2MetricAttributeFilterName](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/V2MetricAttributeFilterName.md) + - [V2MetricFilterName](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/V2MetricFilterName.md) + - [V2TraceAttributeFilterName](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-streaming/docs/V2TraceAttributeFilterName.md) diff --git a/thousandeyes-sdk-streaming/docs/Filters.md b/thousandeyes-sdk-streaming/docs/Filters.md index 259267f0..71ec1d70 100644 --- a/thousandeyes-sdk-streaming/docs/Filters.md +++ b/thousandeyes-sdk-streaming/docs/Filters.md @@ -1,12 +1,14 @@ # Filters -Provides the ability to filter data points based on the specified test types. +Controls which test data the integration exports. `testTypes` is an inclusion filter: when specified, only data from the selected test types is included. `metricsFilter` and `attributesFilter` exclude metrics or attributes from the included data. Filter support depends on the stream's signal and data model version: - For `metric` streams using data model `v1` or `v2`, both `metricsFilter` and `attributesFilter` are supported. - For `log` and `trace` streams using data model `v2`, only `attributesFilter` is supported. `metricsFilter` is not supported. On create, an omitted `testTypes` filter includes all test types, while omitted exclusion filters exclude nothing. On update, each omitted filter remains unchanged. Empty exclusion lists clear existing exclusions; `testTypes.values` must not be empty. ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **test_types** | [**FiltersTestTypes**](FiltersTestTypes.md) | | [optional] +**metrics_filter** | [**FiltersMetrics**](FiltersMetrics.md) | | [optional] +**attributes_filter** | [**FiltersAttributes**](FiltersAttributes.md) | | [optional] ## Example diff --git a/thousandeyes-sdk-streaming/docs/FiltersAttributes.md b/thousandeyes-sdk-streaming/docs/FiltersAttributes.md new file mode 100644 index 00000000..e7bc8043 --- /dev/null +++ b/thousandeyes-sdk-streaming/docs/FiltersAttributes.md @@ -0,0 +1,30 @@ +# FiltersAttributes + +Excludes case-sensitive attribute names for the stream's signal and data model version. An empty list clears existing attribute exclusions. Reserved attributes are always emitted and cannot be excluded: - `v1`: `account.id`, `thousandeyes.data.version`, and `thousandeyes.stream.id` - `v2`: `thousandeyes.account.id`, `thousandeyes.data.version`, and `thousandeyes.stream.id` + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**excluded_attributes** | [**FiltersAttributesExcludedAttributes**](FiltersAttributesExcludedAttributes.md) | | + +## Example + +```python +from thousandeyes_sdk.streaming.models.filters_attributes import FiltersAttributes + +# TODO update the JSON string below +json = "{}" +# create an instance of FiltersAttributes from a JSON string +filters_attributes_instance = FiltersAttributes.from_json(json) +# print the JSON string representation of the object +print(FiltersAttributes.to_json()) + +# convert the object into a dict +filters_attributes_dict = filters_attributes_instance.to_dict() +# create an instance of FiltersAttributes from a dict +filters_attributes_from_dict = FiltersAttributes.from_dict(filters_attributes_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/thousandeyes-sdk-streaming/docs/FiltersAttributesExcludedAttributes.md b/thousandeyes-sdk-streaming/docs/FiltersAttributesExcludedAttributes.md new file mode 100644 index 00000000..4b2a65bf --- /dev/null +++ b/thousandeyes-sdk-streaming/docs/FiltersAttributesExcludedAttributes.md @@ -0,0 +1,29 @@ +# FiltersAttributesExcludedAttributes + +Attribute names to exclude. Values must match the stream's `signal` and `dataModelVersion`. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +## Example + +```python +from thousandeyes_sdk.streaming.models.filters_attributes_excluded_attributes import FiltersAttributesExcludedAttributes + +# TODO update the JSON string below +json = "{}" +# create an instance of FiltersAttributesExcludedAttributes from a JSON string +filters_attributes_excluded_attributes_instance = FiltersAttributesExcludedAttributes.from_json(json) +# print the JSON string representation of the object +print(FiltersAttributesExcludedAttributes.to_json()) + +# convert the object into a dict +filters_attributes_excluded_attributes_dict = filters_attributes_excluded_attributes_instance.to_dict() +# create an instance of FiltersAttributesExcludedAttributes from a dict +filters_attributes_excluded_attributes_from_dict = FiltersAttributesExcludedAttributes.from_dict(filters_attributes_excluded_attributes_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/thousandeyes-sdk-streaming/docs/FiltersMetrics.md b/thousandeyes-sdk-streaming/docs/FiltersMetrics.md new file mode 100644 index 00000000..d0416634 --- /dev/null +++ b/thousandeyes-sdk-streaming/docs/FiltersMetrics.md @@ -0,0 +1,30 @@ +# FiltersMetrics + +Excludes case-sensitive metric names for the stream's data model version. An empty list clears existing metric exclusions. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**excluded_metrics** | [**FiltersMetricsExcludedMetrics**](FiltersMetricsExcludedMetrics.md) | | + +## Example + +```python +from thousandeyes_sdk.streaming.models.filters_metrics import FiltersMetrics + +# TODO update the JSON string below +json = "{}" +# create an instance of FiltersMetrics from a JSON string +filters_metrics_instance = FiltersMetrics.from_json(json) +# print the JSON string representation of the object +print(FiltersMetrics.to_json()) + +# convert the object into a dict +filters_metrics_dict = filters_metrics_instance.to_dict() +# create an instance of FiltersMetrics from a dict +filters_metrics_from_dict = FiltersMetrics.from_dict(filters_metrics_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/thousandeyes-sdk-streaming/docs/FiltersMetricsExcludedMetrics.md b/thousandeyes-sdk-streaming/docs/FiltersMetricsExcludedMetrics.md new file mode 100644 index 00000000..b95a381d --- /dev/null +++ b/thousandeyes-sdk-streaming/docs/FiltersMetricsExcludedMetrics.md @@ -0,0 +1,29 @@ +# FiltersMetricsExcludedMetrics + +Metric names to exclude. Values must match the stream's `dataModelVersion`. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +## Example + +```python +from thousandeyes_sdk.streaming.models.filters_metrics_excluded_metrics import FiltersMetricsExcludedMetrics + +# TODO update the JSON string below +json = "{}" +# create an instance of FiltersMetricsExcludedMetrics from a JSON string +filters_metrics_excluded_metrics_instance = FiltersMetricsExcludedMetrics.from_json(json) +# print the JSON string representation of the object +print(FiltersMetricsExcludedMetrics.to_json()) + +# convert the object into a dict +filters_metrics_excluded_metrics_dict = filters_metrics_excluded_metrics_instance.to_dict() +# create an instance of FiltersMetricsExcludedMetrics from a dict +filters_metrics_excluded_metrics_from_dict = FiltersMetricsExcludedMetrics.from_dict(filters_metrics_excluded_metrics_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/thousandeyes-sdk-streaming/docs/V1MetricAttributeFilterName.md b/thousandeyes-sdk-streaming/docs/V1MetricAttributeFilterName.md new file mode 100644 index 00000000..97ab38a3 --- /dev/null +++ b/thousandeyes-sdk-streaming/docs/V1MetricAttributeFilterName.md @@ -0,0 +1,11 @@ +# V1MetricAttributeFilterName + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/thousandeyes-sdk-streaming/docs/V1MetricFilterName.md b/thousandeyes-sdk-streaming/docs/V1MetricFilterName.md new file mode 100644 index 00000000..6e6b4b20 --- /dev/null +++ b/thousandeyes-sdk-streaming/docs/V1MetricFilterName.md @@ -0,0 +1,11 @@ +# V1MetricFilterName + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/thousandeyes-sdk-streaming/docs/V2LogAttributeFilterName.md b/thousandeyes-sdk-streaming/docs/V2LogAttributeFilterName.md new file mode 100644 index 00000000..a01f8526 --- /dev/null +++ b/thousandeyes-sdk-streaming/docs/V2LogAttributeFilterName.md @@ -0,0 +1,11 @@ +# V2LogAttributeFilterName + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/thousandeyes-sdk-streaming/docs/V2MetricAttributeFilterName.md b/thousandeyes-sdk-streaming/docs/V2MetricAttributeFilterName.md new file mode 100644 index 00000000..3632308c --- /dev/null +++ b/thousandeyes-sdk-streaming/docs/V2MetricAttributeFilterName.md @@ -0,0 +1,11 @@ +# V2MetricAttributeFilterName + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/thousandeyes-sdk-streaming/docs/V2MetricFilterName.md b/thousandeyes-sdk-streaming/docs/V2MetricFilterName.md new file mode 100644 index 00000000..230a5983 --- /dev/null +++ b/thousandeyes-sdk-streaming/docs/V2MetricFilterName.md @@ -0,0 +1,11 @@ +# V2MetricFilterName + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/thousandeyes-sdk-streaming/docs/V2TraceAttributeFilterName.md b/thousandeyes-sdk-streaming/docs/V2TraceAttributeFilterName.md new file mode 100644 index 00000000..2db8fc44 --- /dev/null +++ b/thousandeyes-sdk-streaming/docs/V2TraceAttributeFilterName.md @@ -0,0 +1,11 @@ +# V2TraceAttributeFilterName + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/__init__.py b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/__init__.py index 9b4ad71f..f5564239 100644 --- a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/__init__.py +++ b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/__init__.py @@ -34,6 +34,10 @@ from thousandeyes_sdk.streaming.models.exporter_config_authorization import Expo from thousandeyes_sdk.streaming.models.exporter_config_o_auth2 import ExporterConfigOAuth2 from thousandeyes_sdk.streaming.models.exporter_config_splunk_hec import ExporterConfigSplunkHec from thousandeyes_sdk.streaming.models.filters import Filters +from thousandeyes_sdk.streaming.models.filters_attributes import FiltersAttributes +from thousandeyes_sdk.streaming.models.filters_attributes_excluded_attributes import FiltersAttributesExcludedAttributes +from thousandeyes_sdk.streaming.models.filters_metrics import FiltersMetrics +from thousandeyes_sdk.streaming.models.filters_metrics_excluded_metrics import FiltersMetricsExcludedMetrics from thousandeyes_sdk.streaming.models.filters_test_types import FiltersTestTypes from thousandeyes_sdk.streaming.models.get_stream_response import GetStreamResponse from thousandeyes_sdk.streaming.models.input_config import InputConfig @@ -52,3 +56,9 @@ from thousandeyes_sdk.streaming.models.test_match import TestMatch from thousandeyes_sdk.streaming.models.test_match_domain import TestMatchDomain from thousandeyes_sdk.streaming.models.test_type import TestType from thousandeyes_sdk.streaming.models.unauthorized_error import UnauthorizedError +from thousandeyes_sdk.streaming.models.v1_metric_attribute_filter_name import V1MetricAttributeFilterName +from thousandeyes_sdk.streaming.models.v1_metric_filter_name import V1MetricFilterName +from thousandeyes_sdk.streaming.models.v2_log_attribute_filter_name import V2LogAttributeFilterName +from thousandeyes_sdk.streaming.models.v2_metric_attribute_filter_name import V2MetricAttributeFilterName +from thousandeyes_sdk.streaming.models.v2_metric_filter_name import V2MetricFilterName +from thousandeyes_sdk.streaming.models.v2_trace_attribute_filter_name import V2TraceAttributeFilterName diff --git a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/__init__.py b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/__init__.py index 14edddd0..2f1a6dcb 100644 --- a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/__init__.py +++ b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/__init__.py @@ -29,6 +29,10 @@ from thousandeyes_sdk.streaming.models.exporter_config_authorization import Expo from thousandeyes_sdk.streaming.models.exporter_config_o_auth2 import ExporterConfigOAuth2 from thousandeyes_sdk.streaming.models.exporter_config_splunk_hec import ExporterConfigSplunkHec from thousandeyes_sdk.streaming.models.filters import Filters +from thousandeyes_sdk.streaming.models.filters_attributes import FiltersAttributes +from thousandeyes_sdk.streaming.models.filters_attributes_excluded_attributes import FiltersAttributesExcludedAttributes +from thousandeyes_sdk.streaming.models.filters_metrics import FiltersMetrics +from thousandeyes_sdk.streaming.models.filters_metrics_excluded_metrics import FiltersMetricsExcludedMetrics from thousandeyes_sdk.streaming.models.filters_test_types import FiltersTestTypes from thousandeyes_sdk.streaming.models.get_stream_response import GetStreamResponse from thousandeyes_sdk.streaming.models.input_config import InputConfig @@ -47,3 +51,9 @@ from thousandeyes_sdk.streaming.models.test_match import TestMatch from thousandeyes_sdk.streaming.models.test_match_domain import TestMatchDomain from thousandeyes_sdk.streaming.models.test_type import TestType from thousandeyes_sdk.streaming.models.unauthorized_error import UnauthorizedError +from thousandeyes_sdk.streaming.models.v1_metric_attribute_filter_name import V1MetricAttributeFilterName +from thousandeyes_sdk.streaming.models.v1_metric_filter_name import V1MetricFilterName +from thousandeyes_sdk.streaming.models.v2_log_attribute_filter_name import V2LogAttributeFilterName +from thousandeyes_sdk.streaming.models.v2_metric_attribute_filter_name import V2MetricAttributeFilterName +from thousandeyes_sdk.streaming.models.v2_metric_filter_name import V2MetricFilterName +from thousandeyes_sdk.streaming.models.v2_trace_attribute_filter_name import V2TraceAttributeFilterName diff --git a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters.py b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters.py index 7fe30cc5..e9f6136d 100644 --- a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters.py +++ b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters.py @@ -18,16 +18,20 @@ import json from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional +from thousandeyes_sdk.streaming.models.filters_attributes import FiltersAttributes +from thousandeyes_sdk.streaming.models.filters_metrics import FiltersMetrics from thousandeyes_sdk.streaming.models.filters_test_types import FiltersTestTypes from typing import Optional, Set from typing_extensions import Self class Filters(BaseModel): """ - Provides the ability to filter data points based on the specified test types. + Controls which test data the integration exports. `testTypes` is an inclusion filter: when specified, only data from the selected test types is included. `metricsFilter` and `attributesFilter` exclude metrics or attributes from the included data. Filter support depends on the stream's signal and data model version: - For `metric` streams using data model `v1` or `v2`, both `metricsFilter` and `attributesFilter` are supported. - For `log` and `trace` streams using data model `v2`, only `attributesFilter` is supported. `metricsFilter` is not supported. On create, an omitted `testTypes` filter includes all test types, while omitted exclusion filters exclude nothing. On update, each omitted filter remains unchanged. Empty exclusion lists clear existing exclusions; `testTypes.values` must not be empty. """ # noqa: E501 test_types: Optional[FiltersTestTypes] = Field(default=None, alias="testTypes") - __properties: ClassVar[List[str]] = ["testTypes"] + metrics_filter: Optional[FiltersMetrics] = Field(default=None, alias="metricsFilter") + attributes_filter: Optional[FiltersAttributes] = Field(default=None, alias="attributesFilter") + __properties: ClassVar[List[str]] = ["testTypes", "metricsFilter", "attributesFilter"] model_config = ConfigDict( populate_by_name=True, @@ -72,6 +76,12 @@ class Filters(BaseModel): # override the default output from pydantic by calling `to_dict()` of test_types if self.test_types: _dict['testTypes'] = self.test_types.to_dict() + # override the default output from pydantic by calling `to_dict()` of metrics_filter + if self.metrics_filter: + _dict['metricsFilter'] = self.metrics_filter.to_dict() + # override the default output from pydantic by calling `to_dict()` of attributes_filter + if self.attributes_filter: + _dict['attributesFilter'] = self.attributes_filter.to_dict() return _dict @classmethod @@ -84,7 +94,9 @@ class Filters(BaseModel): return cls.model_validate(obj) _obj = cls.model_validate({ - "testTypes": FiltersTestTypes.from_dict(obj["testTypes"]) if obj.get("testTypes") is not None else None + "testTypes": FiltersTestTypes.from_dict(obj["testTypes"]) if obj.get("testTypes") is not None else None, + "metricsFilter": FiltersMetrics.from_dict(obj["metricsFilter"]) if obj.get("metricsFilter") is not None else None, + "attributesFilter": FiltersAttributes.from_dict(obj["attributesFilter"]) if obj.get("attributesFilter") is not None else None }) return _obj diff --git a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_attributes.py b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_attributes.py new file mode 100644 index 00000000..5615c32f --- /dev/null +++ b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_attributes.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" + ThousandEyes for OpenTelemetry API + + **Note:** The following ThousandEyes for OpenTelemetry API capabilities are not available for ThousandEyes for Government instance: * Traces * Connected Devices * OTel-based integrations that rely on connectors and operations, including: * Splunk Cloud Platform HEC * Splunk Enterprise HEC * Splunk Observability APM * Dynatrace Observability APM ThousandEyes for OpenTelemetry provides machine-to-machine integration between ThousandEyes and its customers. It allows you to export ThousandEyes telemetry data in OTel format, which is widely used in the industry. With ThousandEyes for OTel, you can leverage frameworks widely used in the observability domain - such as Splunk, Grafana, and Honeycomb - to capture and analyze ThousandEyes data. Any client that supports OTel can use ThousandEyes for OpenTelemetry. ThousandEyes for OTel is made up of the following components: * Data streaming APIs that you can use to configure and enable your ThousandEyes tests with OTel-compatible streams, in particular to configure how ThousandEyes telemetry data is exported to client integrations. * A set of streaming pipelines called _collectors_ that actively fetch ThousandEyes network test data, enrich the data with some additional detail, filter, and push the data to the customer-configured endpoints, depending on what you configure via the public APIs. * Third-party OTel collectors that receive, transform, filter, and export different metrics to client applications such as AppD, or any other OTel-capable client configuration. For more information about ThousandEyes for OpenTelemetry, see the [product documentation](https://docs.thousandeyes.com/product-documentation/integration-guides/opentelemetry). + + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from thousandeyes_sdk.streaming.models.filters_attributes_excluded_attributes import FiltersAttributesExcludedAttributes +from typing import Optional, Set +from typing_extensions import Self + +class FiltersAttributes(BaseModel): + """ + Excludes case-sensitive attribute names for the stream's signal and data model version. An empty list clears existing attribute exclusions. Reserved attributes are always emitted and cannot be excluded: - `v1`: `account.id`, `thousandeyes.data.version`, and `thousandeyes.stream.id` - `v2`: `thousandeyes.account.id`, `thousandeyes.data.version`, and `thousandeyes.stream.id` + """ # noqa: E501 + excluded_attributes: FiltersAttributesExcludedAttributes = Field(alias="excludedAttributes") + __properties: ClassVar[List[str]] = ["excludedAttributes"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + extra="allow", + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return self.model_dump_json(by_alias=True, exclude_unset=True, exclude_none=True) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of FiltersAttributes from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of excluded_attributes + if self.excluded_attributes: + _dict['excludedAttributes'] = self.excluded_attributes.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of FiltersAttributes from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "excludedAttributes": FiltersAttributesExcludedAttributes.from_dict(obj["excludedAttributes"]) if obj.get("excludedAttributes") is not None else None + }) + return _obj + + diff --git a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_attributes_excluded_attributes.py b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_attributes_excluded_attributes.py new file mode 100644 index 00000000..85db21db --- /dev/null +++ b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_attributes_excluded_attributes.py @@ -0,0 +1,179 @@ +# coding: utf-8 + +""" + ThousandEyes for OpenTelemetry API + + **Note:** The following ThousandEyes for OpenTelemetry API capabilities are not available for ThousandEyes for Government instance: * Traces * Connected Devices * OTel-based integrations that rely on connectors and operations, including: * Splunk Cloud Platform HEC * Splunk Enterprise HEC * Splunk Observability APM * Dynatrace Observability APM ThousandEyes for OpenTelemetry provides machine-to-machine integration between ThousandEyes and its customers. It allows you to export ThousandEyes telemetry data in OTel format, which is widely used in the industry. With ThousandEyes for OTel, you can leverage frameworks widely used in the observability domain - such as Splunk, Grafana, and Honeycomb - to capture and analyze ThousandEyes data. Any client that supports OTel can use ThousandEyes for OpenTelemetry. ThousandEyes for OTel is made up of the following components: * Data streaming APIs that you can use to configure and enable your ThousandEyes tests with OTel-compatible streams, in particular to configure how ThousandEyes telemetry data is exported to client integrations. * A set of streaming pipelines called _collectors_ that actively fetch ThousandEyes network test data, enrich the data with some additional detail, filter, and push the data to the customer-configured endpoints, depending on what you configure via the public APIs. * Third-party OTel collectors that receive, transform, filter, and export different metrics to client applications such as AppD, or any other OTel-capable client configuration. For more information about ThousandEyes for OpenTelemetry, see the [product documentation](https://docs.thousandeyes.com/product-documentation/integration-guides/opentelemetry). + + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +from inspect import getfullargspec +import json +import pprint +import re # noqa: F401 +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import List, Optional +from thousandeyes_sdk.streaming.models.v1_metric_attribute_filter_name import V1MetricAttributeFilterName +from thousandeyes_sdk.streaming.models.v2_log_attribute_filter_name import V2LogAttributeFilterName +from thousandeyes_sdk.streaming.models.v2_metric_attribute_filter_name import V2MetricAttributeFilterName +from thousandeyes_sdk.streaming.models.v2_trace_attribute_filter_name import V2TraceAttributeFilterName +from typing import Union, Any, List, Set, TYPE_CHECKING, Optional, Dict +from typing_extensions import Literal, Self +from pydantic import Field, model_serializer + +FILTERSATTRIBUTESEXCLUDEDATTRIBUTES_ANY_OF_SCHEMAS = ["List[V1MetricAttributeFilterName]", "List[V2LogAttributeFilterName]", "List[V2MetricAttributeFilterName]", "List[V2TraceAttributeFilterName]"] + +class FiltersAttributesExcludedAttributes(BaseModel): + """ + Attribute names to exclude. Values must match the stream's `signal` and `dataModelVersion`. + """ + + # data type: List[V1MetricAttributeFilterName] + anyof_schema_1_validator: Optional[List[V1MetricAttributeFilterName]] = Field(default=None, description="Attributes to be excluded when `signal` is `metric` and `dataModelVersion` is `v1`.") + # data type: List[V2MetricAttributeFilterName] + anyof_schema_2_validator: Optional[List[V2MetricAttributeFilterName]] = Field(default=None, description="Attributes to be excluded when `signal` is `metric` and `dataModelVersion` is `v2`.") + # data type: List[V2LogAttributeFilterName] + anyof_schema_3_validator: Optional[List[V2LogAttributeFilterName]] = Field(default=None, description="Attributes to be excluded when `signal` is `log` and `dataModelVersion` is `v2`.") + # data type: List[V2TraceAttributeFilterName] + anyof_schema_4_validator: Optional[List[V2TraceAttributeFilterName]] = Field(default=None, description="Attributes to be excluded when `signal` is `trace` and `dataModelVersion` is `v2`.") + if TYPE_CHECKING: + actual_instance: Optional[Union[List[V1MetricAttributeFilterName], List[V2LogAttributeFilterName], List[V2MetricAttributeFilterName], List[V2TraceAttributeFilterName]]] = None + else: + actual_instance: Any = None + any_of_schemas: Set[str] = { "List[V1MetricAttributeFilterName]", "List[V2LogAttributeFilterName]", "List[V2MetricAttributeFilterName]", "List[V2TraceAttributeFilterName]" } + + model_config = { + "validate_assignment": True, + "protected_namespaces": (), + } + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator('actual_instance') + def actual_instance_must_validate_anyof(cls, v): + instance = FiltersAttributesExcludedAttributes.model_construct() + error_messages = [] + # validate data type: List[V1MetricAttributeFilterName] + try: + instance.anyof_schema_1_validator = v + return v + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[V2MetricAttributeFilterName] + try: + instance.anyof_schema_2_validator = v + return v + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[V2LogAttributeFilterName] + try: + instance.anyof_schema_3_validator = v + return v + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[V2TraceAttributeFilterName] + try: + instance.anyof_schema_4_validator = v + return v + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + if error_messages: + # no match + raise ValueError("No match found when setting the actual_instance in FiltersAttributesExcludedAttributes with anyOf schemas: List[V1MetricAttributeFilterName], List[V2LogAttributeFilterName], List[V2MetricAttributeFilterName], List[V2TraceAttributeFilterName]. Details: " + ", ".join(error_messages)) + else: + return v + + @classmethod + def from_dict(cls, obj: Dict[str, Any]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + # deserialize data into List[V1MetricAttributeFilterName] + try: + # validation + instance.anyof_schema_1_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.anyof_schema_1_validator + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[V2MetricAttributeFilterName] + try: + # validation + instance.anyof_schema_2_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.anyof_schema_2_validator + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[V2LogAttributeFilterName] + try: + # validation + instance.anyof_schema_3_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.anyof_schema_3_validator + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[V2TraceAttributeFilterName] + try: + # validation + instance.anyof_schema_4_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.anyof_schema_4_validator + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if error_messages: + # no match + raise ValueError("No match found when deserializing the JSON string into FiltersAttributesExcludedAttributes with anyOf schemas: List[V1MetricAttributeFilterName], List[V2LogAttributeFilterName], List[V2MetricAttributeFilterName], List[V2TraceAttributeFilterName]. Details: " + ", ".join(error_messages)) + else: + return instance + + @model_serializer(when_used="json") + def serialize_model(self): + return json.loads(self.to_json()) + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], List[V1MetricAttributeFilterName], List[V2LogAttributeFilterName], List[V2MetricAttributeFilterName], List[V2TraceAttributeFilterName]]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) + + diff --git a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_metrics.py b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_metrics.py new file mode 100644 index 00000000..800361bf --- /dev/null +++ b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_metrics.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" + ThousandEyes for OpenTelemetry API + + **Note:** The following ThousandEyes for OpenTelemetry API capabilities are not available for ThousandEyes for Government instance: * Traces * Connected Devices * OTel-based integrations that rely on connectors and operations, including: * Splunk Cloud Platform HEC * Splunk Enterprise HEC * Splunk Observability APM * Dynatrace Observability APM ThousandEyes for OpenTelemetry provides machine-to-machine integration between ThousandEyes and its customers. It allows you to export ThousandEyes telemetry data in OTel format, which is widely used in the industry. With ThousandEyes for OTel, you can leverage frameworks widely used in the observability domain - such as Splunk, Grafana, and Honeycomb - to capture and analyze ThousandEyes data. Any client that supports OTel can use ThousandEyes for OpenTelemetry. ThousandEyes for OTel is made up of the following components: * Data streaming APIs that you can use to configure and enable your ThousandEyes tests with OTel-compatible streams, in particular to configure how ThousandEyes telemetry data is exported to client integrations. * A set of streaming pipelines called _collectors_ that actively fetch ThousandEyes network test data, enrich the data with some additional detail, filter, and push the data to the customer-configured endpoints, depending on what you configure via the public APIs. * Third-party OTel collectors that receive, transform, filter, and export different metrics to client applications such as AppD, or any other OTel-capable client configuration. For more information about ThousandEyes for OpenTelemetry, see the [product documentation](https://docs.thousandeyes.com/product-documentation/integration-guides/opentelemetry). + + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from thousandeyes_sdk.streaming.models.filters_metrics_excluded_metrics import FiltersMetricsExcludedMetrics +from typing import Optional, Set +from typing_extensions import Self + +class FiltersMetrics(BaseModel): + """ + Excludes case-sensitive metric names for the stream's data model version. An empty list clears existing metric exclusions. + """ # noqa: E501 + excluded_metrics: FiltersMetricsExcludedMetrics = Field(alias="excludedMetrics") + __properties: ClassVar[List[str]] = ["excludedMetrics"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + extra="allow", + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return self.model_dump_json(by_alias=True, exclude_unset=True, exclude_none=True) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of FiltersMetrics from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of excluded_metrics + if self.excluded_metrics: + _dict['excludedMetrics'] = self.excluded_metrics.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of FiltersMetrics from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "excludedMetrics": FiltersMetricsExcludedMetrics.from_dict(obj["excludedMetrics"]) if obj.get("excludedMetrics") is not None else None + }) + return _obj + + diff --git a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_metrics_excluded_metrics.py b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_metrics_excluded_metrics.py new file mode 100644 index 00000000..996b2221 --- /dev/null +++ b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_metrics_excluded_metrics.py @@ -0,0 +1,143 @@ +# coding: utf-8 + +""" + ThousandEyes for OpenTelemetry API + + **Note:** The following ThousandEyes for OpenTelemetry API capabilities are not available for ThousandEyes for Government instance: * Traces * Connected Devices * OTel-based integrations that rely on connectors and operations, including: * Splunk Cloud Platform HEC * Splunk Enterprise HEC * Splunk Observability APM * Dynatrace Observability APM ThousandEyes for OpenTelemetry provides machine-to-machine integration between ThousandEyes and its customers. It allows you to export ThousandEyes telemetry data in OTel format, which is widely used in the industry. With ThousandEyes for OTel, you can leverage frameworks widely used in the observability domain - such as Splunk, Grafana, and Honeycomb - to capture and analyze ThousandEyes data. Any client that supports OTel can use ThousandEyes for OpenTelemetry. ThousandEyes for OTel is made up of the following components: * Data streaming APIs that you can use to configure and enable your ThousandEyes tests with OTel-compatible streams, in particular to configure how ThousandEyes telemetry data is exported to client integrations. * A set of streaming pipelines called _collectors_ that actively fetch ThousandEyes network test data, enrich the data with some additional detail, filter, and push the data to the customer-configured endpoints, depending on what you configure via the public APIs. * Third-party OTel collectors that receive, transform, filter, and export different metrics to client applications such as AppD, or any other OTel-capable client configuration. For more information about ThousandEyes for OpenTelemetry, see the [product documentation](https://docs.thousandeyes.com/product-documentation/integration-guides/opentelemetry). + + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +from inspect import getfullargspec +import json +import pprint +import re # noqa: F401 +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import List, Optional +from thousandeyes_sdk.streaming.models.v1_metric_filter_name import V1MetricFilterName +from thousandeyes_sdk.streaming.models.v2_metric_filter_name import V2MetricFilterName +from typing import Union, Any, List, Set, TYPE_CHECKING, Optional, Dict +from typing_extensions import Literal, Self +from pydantic import Field, model_serializer + +FILTERSMETRICSEXCLUDEDMETRICS_ANY_OF_SCHEMAS = ["List[V1MetricFilterName]", "List[V2MetricFilterName]"] + +class FiltersMetricsExcludedMetrics(BaseModel): + """ + Metric names to exclude. Values must match the stream's `dataModelVersion`. + """ + + # data type: List[V1MetricFilterName] + anyof_schema_1_validator: Optional[List[V1MetricFilterName]] = Field(default=None, description="Metrics to be excluded when `signal` is `metric` and `dataModelVersion` is `v1`.") + # data type: List[V2MetricFilterName] + anyof_schema_2_validator: Optional[List[V2MetricFilterName]] = Field(default=None, description="Metrics to be excluded when `signal` is `metric` and `dataModelVersion` is `v2`.") + if TYPE_CHECKING: + actual_instance: Optional[Union[List[V1MetricFilterName], List[V2MetricFilterName]]] = None + else: + actual_instance: Any = None + any_of_schemas: Set[str] = { "List[V1MetricFilterName]", "List[V2MetricFilterName]" } + + model_config = { + "validate_assignment": True, + "protected_namespaces": (), + } + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator('actual_instance') + def actual_instance_must_validate_anyof(cls, v): + instance = FiltersMetricsExcludedMetrics.model_construct() + error_messages = [] + # validate data type: List[V1MetricFilterName] + try: + instance.anyof_schema_1_validator = v + return v + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: List[V2MetricFilterName] + try: + instance.anyof_schema_2_validator = v + return v + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + if error_messages: + # no match + raise ValueError("No match found when setting the actual_instance in FiltersMetricsExcludedMetrics with anyOf schemas: List[V1MetricFilterName], List[V2MetricFilterName]. Details: " + ", ".join(error_messages)) + else: + return v + + @classmethod + def from_dict(cls, obj: Dict[str, Any]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + # deserialize data into List[V1MetricFilterName] + try: + # validation + instance.anyof_schema_1_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.anyof_schema_1_validator + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into List[V2MetricFilterName] + try: + # validation + instance.anyof_schema_2_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.anyof_schema_2_validator + return instance + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if error_messages: + # no match + raise ValueError("No match found when deserializing the JSON string into FiltersMetricsExcludedMetrics with anyOf schemas: List[V1MetricFilterName], List[V2MetricFilterName]. Details: " + ", ".join(error_messages)) + else: + return instance + + @model_serializer(when_used="json") + def serialize_model(self): + return json.loads(self.to_json()) + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], List[V1MetricFilterName], List[V2MetricFilterName]]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) + + diff --git a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_test_types.py b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_test_types.py index d17ddea1..2ce28bf9 100644 --- a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_test_types.py +++ b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/filters_test_types.py @@ -18,6 +18,7 @@ import json from pydantic import BaseModel, ConfigDict, Field from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated from thousandeyes_sdk.streaming.models.test_type import TestType from typing import Optional, Set from typing_extensions import Self @@ -26,7 +27,7 @@ class FiltersTestTypes(BaseModel): """ Test types that can be used for filtering data points. """ # noqa: E501 - values: Optional[List[TestType]] = Field(default=None, description="A list of test types to filter data points.") + values: Optional[Annotated[List[TestType], Field(min_length=1)]] = Field(default=None, description="A list of test types to filter data points.") __properties: ClassVar[List[str]] = ["values"] model_config = ConfigDict( diff --git a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v1_metric_attribute_filter_name.py b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v1_metric_attribute_filter_name.py new file mode 100644 index 00000000..299928f8 --- /dev/null +++ b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v1_metric_attribute_filter_name.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +""" + ThousandEyes for OpenTelemetry API + + **Note:** The following ThousandEyes for OpenTelemetry API capabilities are not available for ThousandEyes for Government instance: * Traces * Connected Devices * OTel-based integrations that rely on connectors and operations, including: * Splunk Cloud Platform HEC * Splunk Enterprise HEC * Splunk Observability APM * Dynatrace Observability APM ThousandEyes for OpenTelemetry provides machine-to-machine integration between ThousandEyes and its customers. It allows you to export ThousandEyes telemetry data in OTel format, which is widely used in the industry. With ThousandEyes for OTel, you can leverage frameworks widely used in the observability domain - such as Splunk, Grafana, and Honeycomb - to capture and analyze ThousandEyes data. Any client that supports OTel can use ThousandEyes for OpenTelemetry. ThousandEyes for OTel is made up of the following components: * Data streaming APIs that you can use to configure and enable your ThousandEyes tests with OTel-compatible streams, in particular to configure how ThousandEyes telemetry data is exported to client integrations. * A set of streaming pipelines called _collectors_ that actively fetch ThousandEyes network test data, enrich the data with some additional detail, filter, and push the data to the customer-configured endpoints, depending on what you configure via the public APIs. * Third-party OTel collectors that receive, transform, filter, and export different metrics to client applications such as AppD, or any other OTel-capable client configuration. For more information about ThousandEyes for OpenTelemetry, see the [product documentation](https://docs.thousandeyes.com/product-documentation/integration-guides/opentelemetry). + + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class V1MetricAttributeFilterName(str, Enum): + """ + V1MetricAttributeFilterName + """ + + """ + allowed enum values + """ + AGENT_DOT_GEO_DOT_COUNTRY_DOT_ISO_CODE = 'agent.geo.country.iso_code' + AGENT_DOT_GEO_DOT_REGION_DOT_ISO_CODE = 'agent.geo.region.iso_code' + AGENT_DOT_GEONAME_DOT_ID = 'agent.geoname.id' + AGENT_DOT_ID = 'agent.id' + AGENT_DOT_LOCATION = 'agent.location' + AGENT_DOT_NAME = 'agent.name' + DATAPOINT_DOT_CREATED = 'datapoint.created' + DATAPOINT_DOT_ID = 'datapoint.id' + DATAPOINT_DOT_RECEIVED = 'datapoint.received' + DIRECTION = 'direction' + ERROR_DOT_DETAILS = 'error.details' + ERROR_DOT_NUM = 'error.num' + ERROR_DOT_TYPE = 'error.type' + FINALSERVER = 'finalserver' + HTTP_DOT_REQUEST_DOT_METHOD = 'http.request.method' + INTEGRATION_DOT_ID = 'integration.id' + MONITOR_DOT_ID = 'monitor.id' + MONITOR_DOT_LOCATION = 'monitor.location' + MONITOR_DOT_NAME = 'monitor.name' + NETWORK_DOT_AS_DOT_PATH = 'network.as.path' + OBJECT_DOT_NUM = 'object.num' + OBJECT_DOT_SIZE = 'object.size' + PERMALINK = 'permalink' + PREFIX = 'prefix' + QUERY_DOT_COUNT = 'query.count' + QUERY_DOT_FAILED_COUNT = 'query.failed_count' + RESPONSE_DOT_CODE = 'response.code' + RESPONSE_DOT_TIME_DOT_DOM = 'response.time.dom' + RESPONSE_DOT_TIME_DOT_FIRST = 'response.time.first' + ROUND_DOT_ID = 'round.id' + SERVER_DOT_ID = 'server.id' + SERVER_DOT_IP = 'server.ip' + SERVER_DOT_NAME = 'server.name' + SOURCE_DOT_AGENT_DOT_GEO_DOT_COUNTRY_DOT_ISO_CODE = 'source.agent.geo.country.iso_code' + SOURCE_DOT_AGENT_DOT_GEO_DOT_REGION_DOT_ISO_CODE = 'source.agent.geo.region.iso_code' + SOURCE_DOT_AGENT_DOT_GEONAME_DOT_ID = 'source.agent.geoname.id' + SOURCE_DOT_AGENT_DOT_ID = 'source.agent.id' + SOURCE_DOT_AGENT_DOT_LOCATION = 'source.agent.location' + SOURCE_DOT_AGENT_DOT_NAME = 'source.agent.name' + STEP = 'step' + TARGET_DOT_AGENT_DOT_GEO_DOT_COUNTRY_DOT_ISO_CODE = 'target.agent.geo.country.iso_code' + TARGET_DOT_AGENT_DOT_GEO_DOT_REGION_DOT_ISO_CODE = 'target.agent.geo.region.iso_code' + TARGET_DOT_AGENT_DOT_GEONAME_DOT_ID = 'target.agent.geoname.id' + TARGET_DOT_AGENT_DOT_ID = 'target.agent.id' + TARGET_DOT_AGENT_DOT_LOCATION = 'target.agent.location' + TARGET_DOT_AGENT_DOT_NAME = 'target.agent.name' + TEST_DOT_DOMAIN = 'test.domain' + TEST_DOT_ID = 'test.id' + TEST_DOT_NAME = 'test.name' + TEST_DOT_TYPE = 'test.type' + THOUSANDEYES_DOT_STREAM_DOT_NAME = 'thousandeyes.stream.name' + URL = 'url' + URL_DOT_FULL = 'url.full' + UNKNOWN = 'unknown' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of V1MetricAttributeFilterName from a JSON string""" + return cls(json.loads(json_str)) + + @classmethod + def _missing_(cls, value): + """Handle unknown values""" + return cls.UNKNOWN + diff --git a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v1_metric_filter_name.py b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v1_metric_filter_name.py new file mode 100644 index 00000000..98f5ebf5 --- /dev/null +++ b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v1_metric_filter_name.py @@ -0,0 +1,72 @@ +# coding: utf-8 + +""" + ThousandEyes for OpenTelemetry API + + **Note:** The following ThousandEyes for OpenTelemetry API capabilities are not available for ThousandEyes for Government instance: * Traces * Connected Devices * OTel-based integrations that rely on connectors and operations, including: * Splunk Cloud Platform HEC * Splunk Enterprise HEC * Splunk Observability APM * Dynatrace Observability APM ThousandEyes for OpenTelemetry provides machine-to-machine integration between ThousandEyes and its customers. It allows you to export ThousandEyes telemetry data in OTel format, which is widely used in the industry. With ThousandEyes for OTel, you can leverage frameworks widely used in the observability domain - such as Splunk, Grafana, and Honeycomb - to capture and analyze ThousandEyes data. Any client that supports OTel can use ThousandEyes for OpenTelemetry. ThousandEyes for OTel is made up of the following components: * Data streaming APIs that you can use to configure and enable your ThousandEyes tests with OTel-compatible streams, in particular to configure how ThousandEyes telemetry data is exported to client integrations. * A set of streaming pipelines called _collectors_ that actively fetch ThousandEyes network test data, enrich the data with some additional detail, filter, and push the data to the customer-configured endpoints, depending on what you configure via the public APIs. * Third-party OTel collectors that receive, transform, filter, and export different metrics to client applications such as AppD, or any other OTel-capable client configuration. For more information about ThousandEyes for OpenTelemetry, see the [product documentation](https://docs.thousandeyes.com/product-documentation/integration-guides/opentelemetry). + + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class V1MetricFilterName(str, Enum): + """ + V1MetricFilterName + """ + + """ + allowed enum values + """ + API_DOT_METRICS_DOT_COMPLETION = 'api.metrics.completion' + API_DOT_METRICS_DOT_TIME = 'api.metrics.time' + API_DOT_STEP_DOT_METRICS_DOT_COMPLETION = 'api.step.metrics.completion' + API_DOT_STEP_DOT_METRICS_DOT_TIME = 'api.step.metrics.time' + BGP_DOT_METRICS_DOT_PATH_DOT_CHANGES = 'bgp.metrics.path.changes' + BGP_DOT_METRICS_DOT_REACHABILITY = 'bgp.metrics.reachability' + BGP_DOT_METRICS_DOT_UPDATES = 'bgp.metrics.updates' + DNSSEC_DOT_METRICS_DOT_VALIDITY = 'dnssec.metrics.validity' + DNSSERVER_DOT_METRICS_DOT_AVAILABILITY = 'dnsserver.metrics.availability' + DNSSERVER_DOT_METRICS_DOT_RESOLUTION_DOT_TIME = 'dnsserver.metrics.resolution.time' + DNSTRACE_DOT_METRICS_DOT_AVAILABILITY = 'dnstrace.metrics.availability' + DNSTRACE_DOT_METRICS_DOT_QUERY_DOT_TIME = 'dnstrace.metrics.query.time' + FTP_DOT_METRICS_DOT_AVAILABILITY = 'ftp.metrics.availability' + FTP_DOT_METRICS_DOT_RESPONSE_DOT_TIME = 'ftp.metrics.response.time' + FTP_DOT_METRICS_DOT_THROUGHPUT = 'ftp.metrics.throughput' + HTTP_DOT_METRICS_DOT_AVAILABILITY = 'http.metrics.availability' + HTTP_DOT_METRICS_DOT_RESPONSE_DOT_TIME = 'http.metrics.response.time' + HTTP_DOT_METRICS_DOT_THROUGHPUT = 'http.metrics.throughput' + NET_DOT_METRICS_DOT_JITTER = 'net.metrics.jitter' + NET_DOT_METRICS_DOT_LATENCY = 'net.metrics.latency' + NET_DOT_METRICS_DOT_LOSS = 'net.metrics.loss' + PAGELOAD_DOT_METRICS_DOT_COMPLETION = 'pageload.metrics.completion' + PAGELOAD_DOT_METRICS_DOT_TIME = 'pageload.metrics.time' + RTP_DOT_METRICS_DOT_DISCARDS = 'rtp.metrics.discards' + RTP_DOT_METRICS_DOT_LATENCY = 'rtp.metrics.latency' + RTP_DOT_METRICS_DOT_LOSS = 'rtp.metrics.loss' + RTP_DOT_METRICS_DOT_MOS = 'rtp.metrics.mos' + SIP_DOT_METRICS_DOT_AVAILABILITY = 'sip.metrics.availability' + SIP_DOT_METRICS_DOT_RESPONSE_DOT_TIME = 'sip.metrics.response.time' + SIP_DOT_METRICS_DOT_TOTAL_DOT_TIME = 'sip.metrics.total.time' + WEBTRANSACTION_DOT_METRICS_DOT_COMPLETION = 'webtransaction.metrics.completion' + WEBTRANSACTION_DOT_METRICS_DOT_ERRORS = 'webtransaction.metrics.errors' + WEBTRANSACTION_DOT_METRICS_DOT_TRANSACTION_DOT_TIME = 'webtransaction.metrics.transaction.time' + UNKNOWN = 'unknown' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of V1MetricFilterName from a JSON string""" + return cls(json.loads(json_str)) + + @classmethod + def _missing_(cls, value): + """Handle unknown values""" + return cls.UNKNOWN + diff --git a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_log_attribute_filter_name.py b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_log_attribute_filter_name.py new file mode 100644 index 00000000..e5f444cb --- /dev/null +++ b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_log_attribute_filter_name.py @@ -0,0 +1,46 @@ +# coding: utf-8 + +""" + ThousandEyes for OpenTelemetry API + + **Note:** The following ThousandEyes for OpenTelemetry API capabilities are not available for ThousandEyes for Government instance: * Traces * Connected Devices * OTel-based integrations that rely on connectors and operations, including: * Splunk Cloud Platform HEC * Splunk Enterprise HEC * Splunk Observability APM * Dynatrace Observability APM ThousandEyes for OpenTelemetry provides machine-to-machine integration between ThousandEyes and its customers. It allows you to export ThousandEyes telemetry data in OTel format, which is widely used in the industry. With ThousandEyes for OTel, you can leverage frameworks widely used in the observability domain - such as Splunk, Grafana, and Honeycomb - to capture and analyze ThousandEyes data. Any client that supports OTel can use ThousandEyes for OpenTelemetry. ThousandEyes for OTel is made up of the following components: * Data streaming APIs that you can use to configure and enable your ThousandEyes tests with OTel-compatible streams, in particular to configure how ThousandEyes telemetry data is exported to client integrations. * A set of streaming pipelines called _collectors_ that actively fetch ThousandEyes network test data, enrich the data with some additional detail, filter, and push the data to the customer-configured endpoints, depending on what you configure via the public APIs. * Third-party OTel collectors that receive, transform, filter, and export different metrics to client applications such as AppD, or any other OTel-capable client configuration. For more information about ThousandEyes for OpenTelemetry, see the [product documentation](https://docs.thousandeyes.com/product-documentation/integration-guides/opentelemetry). + + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class V2LogAttributeFilterName(str, Enum): + """ + V2LogAttributeFilterName + """ + + """ + allowed enum values + """ + THOUSANDEYES_DOT_ACCOUNT_DOT_NAME = 'thousandeyes.account.name' + THOUSANDEYES_DOT_ACTIVITYLOG_DOT_RESOURCES = 'thousandeyes.activitylog.resources' + THOUSANDEYES_DOT_STREAM_DOT_NAME = 'thousandeyes.stream.name' + THOUSANDEYES_DOT_USER_DOT_ADDRESS = 'thousandeyes.user.address' + THOUSANDEYES_DOT_USER_DOT_EMAIL = 'thousandeyes.user.email' + THOUSANDEYES_DOT_USER_DOT_ID = 'thousandeyes.user.id' + THOUSANDEYES_DOT_USER_DOT_NAME = 'thousandeyes.user.name' + UNKNOWN = 'unknown' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of V2LogAttributeFilterName from a JSON string""" + return cls(json.loads(json_str)) + + @classmethod + def _missing_(cls, value): + """Handle unknown values""" + return cls.UNKNOWN + diff --git a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_metric_attribute_filter_name.py b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_metric_attribute_filter_name.py new file mode 100644 index 00000000..b3b6bace --- /dev/null +++ b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_metric_attribute_filter_name.py @@ -0,0 +1,109 @@ +# coding: utf-8 + +""" + ThousandEyes for OpenTelemetry API + + **Note:** The following ThousandEyes for OpenTelemetry API capabilities are not available for ThousandEyes for Government instance: * Traces * Connected Devices * OTel-based integrations that rely on connectors and operations, including: * Splunk Cloud Platform HEC * Splunk Enterprise HEC * Splunk Observability APM * Dynatrace Observability APM ThousandEyes for OpenTelemetry provides machine-to-machine integration between ThousandEyes and its customers. It allows you to export ThousandEyes telemetry data in OTel format, which is widely used in the industry. With ThousandEyes for OTel, you can leverage frameworks widely used in the observability domain - such as Splunk, Grafana, and Honeycomb - to capture and analyze ThousandEyes data. Any client that supports OTel can use ThousandEyes for OpenTelemetry. ThousandEyes for OTel is made up of the following components: * Data streaming APIs that you can use to configure and enable your ThousandEyes tests with OTel-compatible streams, in particular to configure how ThousandEyes telemetry data is exported to client integrations. * A set of streaming pipelines called _collectors_ that actively fetch ThousandEyes network test data, enrich the data with some additional detail, filter, and push the data to the customer-configured endpoints, depending on what you configure via the public APIs. * Third-party OTel collectors that receive, transform, filter, and export different metrics to client applications such as AppD, or any other OTel-capable client configuration. For more information about ThousandEyes for OpenTelemetry, see the [product documentation](https://docs.thousandeyes.com/product-documentation/integration-guides/opentelemetry). + + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class V2MetricAttributeFilterName(str, Enum): + """ + V2MetricAttributeFilterName + """ + + """ + allowed enum values + """ + CLIENT_DOT_ADDRESS = 'client.address' + DETECTION_DOT_TYPE = 'detection.type' + DNS_DOT_QUESTION_DOT_NAME = 'dns.question.name' + ERROR_DOT_TYPE = 'error.type' + FTP_DOT_REQUEST_DOT_COMMAND = 'ftp.request.command' + FTP_DOT_RESPONSE_DOT_STATUS_CODE = 'ftp.response.status_code' + HTTP_DOT_REQUEST_DOT_METHOD = 'http.request.method' + HTTP_DOT_RESPONSE_DOT_STATUS_CODE = 'http.response.status_code' + HTTP_DOT_ROUTE = 'http.route' + NETWORK_DOT_AS_DOT_PATH = 'network.as.path' + NETWORK_DOT_CARRIER_DOT_NAME = 'network.carrier.name' + NETWORK_DOT_CELLULAR_DOT_GENERATION = 'network.cellular.generation' + NETWORK_DOT_CONNECTION_DOT_SUBTYPE = 'network.connection.subtype' + NETWORK_DOT_CONNECTION_DOT_TYPE = 'network.connection.type' + NETWORK_DOT_INTERFACE_DOT_DRIVER_DOT_MODEL = 'network.interface.driver.model' + NETWORK_DOT_INTERFACE_DOT_DRIVER_DOT_VERSION = 'network.interface.driver.version' + NETWORK_DOT_INTERFACE_DOT_NAME = 'network.interface.name' + NETWORK_DOT_IO_DOT_DIRECTION = 'network.io.direction' + NETWORK_DOT_PREFIX = 'network.prefix' + NETWORK_DOT_TRANSPORT = 'network.transport' + NETWORK_DOT_WIFI_DOT_ACCESS_POINT_DOT_VENDOR = 'network.wifi.access_point.vendor' + NETWORK_DOT_WIFI_DOT_BSSID = 'network.wifi.bssid' + NETWORK_DOT_WIFI_DOT_CHANNEL = 'network.wifi.channel' + NETWORK_DOT_WIFI_DOT_PHY_MODE = 'network.wifi.phy_mode' + NETWORK_DOT_WIFI_DOT_SSID = 'network.wifi.ssid' + SERVER_DOT_ADDRESS = 'server.address' + SERVER_DOT_PORT = 'server.port' + SIP_DOT_RESPONSE_DOT_STATUS_CODE = 'sip.response.status_code' + TARGET_DOT_TYPE = 'target.type' + THOUSANDEYES_DOT_MONITOR_DOT_ID = 'thousandeyes.monitor.id' + THOUSANDEYES_DOT_MONITOR_DOT_LOCATION = 'thousandeyes.monitor.location' + THOUSANDEYES_DOT_MONITOR_DOT_NAME = 'thousandeyes.monitor.name' + THOUSANDEYES_DOT_PERMALINK = 'thousandeyes.permalink' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_CONNECTION_DOT_ISP = 'thousandeyes.source.agent.connection.isp' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_CONNECTION_DOT_PACKAGE = 'thousandeyes.source.agent.connection.package' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_CONNECTION_DOT_TYPE = 'thousandeyes.source.agent.connection.type' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_GEO_DOT_COUNTRY_DOT_ISO_CODE = 'thousandeyes.source.agent.geo.country.iso_code' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_GEO_DOT_REGION_DOT_ISO_CODE = 'thousandeyes.source.agent.geo.region.iso_code' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_GEONAME_DOT_ID = 'thousandeyes.source.agent.geoname.id' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_HW_DOT_TYPE = 'thousandeyes.source.agent.hw.type' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_ID = 'thousandeyes.source.agent.id' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_LOCAL_DOT_NETWORK_DOT_ADDRESS = 'thousandeyes.source.agent.local.network.address' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_LOCATION = 'thousandeyes.source.agent.location' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_MAC_DOT_ADDRESS = 'thousandeyes.source.agent.mac.address' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_NAME = 'thousandeyes.source.agent.name' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_NETWORK_DOT_ADDRESS = 'thousandeyes.source.agent.network.address' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_NETWORK_DOT_ADDRESS_IPV4 = 'thousandeyes.source.agent.network.address_ipv4' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_NETWORK_DOT_ADDRESS_IPV6 = 'thousandeyes.source.agent.network.address_ipv6' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_NETWORK_DOT_AS_DOT_NAME = 'thousandeyes.source.agent.network.as.name' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_NETWORK_DOT_AS_DOT_NUMBER = 'thousandeyes.source.agent.network.as.number' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_NETWORK_DOT_ORG = 'thousandeyes.source.agent.network.org' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_OS_DOT_TYPE = 'thousandeyes.source.agent.os.type' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_SERIAL_NUMBER = 'thousandeyes.source.agent.serial_number' + THOUSANDEYES_DOT_SOURCE_DOT_UNIT_DOT_ID = 'thousandeyes.source.unit.id' + THOUSANDEYES_DOT_STREAM_DOT_NAME = 'thousandeyes.stream.name' + THOUSANDEYES_DOT_TARGET_DOT_AGENT_DOT_GEO_DOT_COUNTRY_DOT_ISO_CODE = 'thousandeyes.target.agent.geo.country.iso_code' + THOUSANDEYES_DOT_TARGET_DOT_AGENT_DOT_GEO_DOT_REGION_DOT_ISO_CODE = 'thousandeyes.target.agent.geo.region.iso_code' + THOUSANDEYES_DOT_TARGET_DOT_AGENT_DOT_GEONAME_DOT_ID = 'thousandeyes.target.agent.geoname.id' + THOUSANDEYES_DOT_TARGET_DOT_AGENT_DOT_ID = 'thousandeyes.target.agent.id' + THOUSANDEYES_DOT_TARGET_DOT_AGENT_DOT_LOCATION = 'thousandeyes.target.agent.location' + THOUSANDEYES_DOT_TARGET_DOT_AGENT_DOT_NAME = 'thousandeyes.target.agent.name' + THOUSANDEYES_DOT_TEST_DOT_DOMAIN = 'thousandeyes.test.domain' + THOUSANDEYES_DOT_TEST_DOT_ID = 'thousandeyes.test.id' + THOUSANDEYES_DOT_TEST_DOT_NAME = 'thousandeyes.test.name' + THOUSANDEYES_DOT_TEST_DOT_STEP = 'thousandeyes.test.step' + THOUSANDEYES_DOT_TEST_DOT_TYPE = 'thousandeyes.test.type' + THOUSANDEYES_DOT_TRIGGERING_DOT_AGENT_DOT_ID = 'thousandeyes.triggering.agent.id' + TRANSITION_DOT_TYPE = 'transition.type' + URL_DOT_SCHEME = 'url.scheme' + VPN_DOT_VENDOR = 'vpn.vendor' + UNKNOWN = 'unknown' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of V2MetricAttributeFilterName from a JSON string""" + return cls(json.loads(json_str)) + + @classmethod + def _missing_(cls, value): + """Handle unknown values""" + return cls.UNKNOWN + diff --git a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_metric_filter_name.py b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_metric_filter_name.py new file mode 100644 index 00000000..951f67fe --- /dev/null +++ b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_metric_filter_name.py @@ -0,0 +1,99 @@ +# coding: utf-8 + +""" + ThousandEyes for OpenTelemetry API + + **Note:** The following ThousandEyes for OpenTelemetry API capabilities are not available for ThousandEyes for Government instance: * Traces * Connected Devices * OTel-based integrations that rely on connectors and operations, including: * Splunk Cloud Platform HEC * Splunk Enterprise HEC * Splunk Observability APM * Dynatrace Observability APM ThousandEyes for OpenTelemetry provides machine-to-machine integration between ThousandEyes and its customers. It allows you to export ThousandEyes telemetry data in OTel format, which is widely used in the industry. With ThousandEyes for OTel, you can leverage frameworks widely used in the observability domain - such as Splunk, Grafana, and Honeycomb - to capture and analyze ThousandEyes data. Any client that supports OTel can use ThousandEyes for OpenTelemetry. ThousandEyes for OTel is made up of the following components: * Data streaming APIs that you can use to configure and enable your ThousandEyes tests with OTel-compatible streams, in particular to configure how ThousandEyes telemetry data is exported to client integrations. * A set of streaming pipelines called _collectors_ that actively fetch ThousandEyes network test data, enrich the data with some additional detail, filter, and push the data to the customer-configured endpoints, depending on what you configure via the public APIs. * Third-party OTel collectors that receive, transform, filter, and export different metrics to client applications such as AppD, or any other OTel-capable client configuration. For more information about ThousandEyes for OpenTelemetry, see the [product documentation](https://docs.thousandeyes.com/product-documentation/integration-guides/opentelemetry). + + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class V2MetricFilterName(str, Enum): + """ + V2MetricFilterName + """ + + """ + allowed enum values + """ + API_DOT_COMPLETION = 'api.completion' + API_DOT_DURATION = 'api.duration' + API_DOT_STEP_DOT_COMPLETION = 'api.step.completion' + API_DOT_STEP_DOT_DURATION = 'api.step.duration' + BGP_DOT_PATH_CHANGES_DOT_COUNT = 'bgp.path_changes.count' + BGP_DOT_REACHABILITY = 'bgp.reachability' + BGP_DOT_UPDATES_DOT_COUNT = 'bgp.updates.count' + DNS_DOT_LOOKUP_DOT_AVAILABILITY = 'dns.lookup.availability' + DNS_DOT_LOOKUP_DOT_DURATION = 'dns.lookup.duration' + DNS_DOT_LOOKUP_DOT_VALIDITY = 'dns.lookup.validity' + FTP_DOT_CLIENT_DOT_REQUEST_DOT_DURATION = 'ftp.client.request.duration' + FTP_DOT_SERVER_DOT_REQUEST_DOT_AVAILABILITY = 'ftp.server.request.availability' + FTP_DOT_SERVER_DOT_THROUGHPUT = 'ftp.server.throughput' + HTTP_DOT_CLIENT_DOT_REQUEST_DOT_DURATION = 'http.client.request.duration' + HTTP_DOT_SERVER_DOT_REQUEST_DOT_AVAILABILITY = 'http.server.request.availability' + HTTP_DOT_SERVER_DOT_REQUEST_DOT_DURATION = 'http.server.request.duration' + HTTP_DOT_SERVER_DOT_REQUEST_DOT_THROUGHPUT = 'http.server.request.throughput' + HTTP_DOT_SERVER_DOT_THROUGHPUT = 'http.server.throughput' + NETWORK_DOT_AVAILABILITY = 'network.availability' + NETWORK_DOT_CONNECTION_DOT_LINK_SPEED = 'network.connection.link_speed' + NETWORK_DOT_CONNECTION_DOT_SCORE = 'network.connection.score' + NETWORK_DOT_CONNECTION_DOT_THROUGHPUT = 'network.connection.throughput' + NETWORK_DOT_DEVICE_DOT_DISCONNECTION_DOT_DURATION = 'network.device.disconnection.duration' + NETWORK_DOT_DEVICE_DOT_DISCONNECTION_DOT_PACKETS_LOST = 'network.device.disconnection.packets_lost' + NETWORK_DOT_DEVICE_DOT_PARTIAL_DISCONNECTION_DOT_TRANSITIONS = 'network.device.partial_disconnection.transitions' + NETWORK_DOT_JITTER = 'network.jitter' + NETWORK_DOT_LATENCY = 'network.latency' + NETWORK_DOT_LOSS = 'network.loss' + NETWORK_DOT_SCORE = 'network.score' + NETWORK_DOT_SIGNAL_DOT_QUALITY = 'network.signal.quality' + NETWORK_DOT_SIGNAL_DOT_RSCP = 'network.signal.rscp' + NETWORK_DOT_SIGNAL_DOT_RSRP = 'network.signal.rsrp' + NETWORK_DOT_SIGNAL_DOT_RSRQ = 'network.signal.rsrq' + NETWORK_DOT_SIGNAL_DOT_RSSI = 'network.signal.rssi' + NETWORK_DOT_SIGNAL_DOT_SINR = 'network.signal.sinr' + NETWORK_DOT_THROUGHPUT = 'network.throughput' + NETWORK_DOT_WIFI_DOT_CHANNEL_DOT_CHANGES_DOT_COUNT = 'network.wifi.channel.changes.count' + NETWORK_DOT_WIFI_DOT_RETRANSMISSION_DOT_RATE = 'network.wifi.retransmission.rate' + NETWORK_DOT_WIFI_DOT_ROAMING_DOT_EVENTS_DOT_COUNT = 'network.wifi.roaming.events.count' + RTP_DOT_CLIENT_DOT_REQUEST_DOT_DISCARDS = 'rtp.client.request.discards' + RTP_DOT_CLIENT_DOT_REQUEST_DOT_DURATION = 'rtp.client.request.duration' + RTP_DOT_CLIENT_DOT_REQUEST_DOT_LOSS = 'rtp.client.request.loss' + RTP_DOT_CLIENT_DOT_REQUEST_DOT_MOS = 'rtp.client.request.mos' + RTP_DOT_CLIENT_DOT_REQUEST_DOT_PDV = 'rtp.client.request.pdv' + SIP_DOT_CLIENT_DOT_REQUEST_DOT_DURATION = 'sip.client.request.duration' + SIP_DOT_CLIENT_DOT_REQUEST_DOT_TOTAL_TIME = 'sip.client.request.total_time' + SIP_DOT_SERVER_DOT_REQUEST_DOT_AVAILABILITY = 'sip.server.request.availability' + SYSTEM_DOT_BATTERY_DOT_CHARGE = 'system.battery.charge' + SYSTEM_DOT_BATTERY_DOT_HEALTH = 'system.battery.health' + SYSTEM_DOT_CPU_DOT_UTILIZATION = 'system.cpu.utilization' + SYSTEM_DOT_DISK_DOT_FREE_DOT_UTILIZATION = 'system.disk.free.utilization' + SYSTEM_DOT_MEMORY_DOT_UTILIZATION = 'system.memory.utilization' + THOUSANDEYES_DOT_ENDPOINT_DOT_AGENT_DOT_SCORE = 'thousandeyes.endpoint.agent.score' + WEB_DOT_PAGE_LOAD_DOT_COMPLETION = 'web.page_load.completion' + WEB_DOT_PAGE_LOAD_DOT_DURATION = 'web.page_load.duration' + WEB_DOT_PAGE_LOAD_DOT_JITTER = 'web.page_load.jitter' + WEB_DOT_PAGE_LOAD_DOT_THROUGHPUT = 'web.page_load.throughput' + WEB_DOT_TRANSACTION_DOT_COMPLETION = 'web.transaction.completion' + WEB_DOT_TRANSACTION_DOT_DURATION = 'web.transaction.duration' + WEB_DOT_TRANSACTION_DOT_ERRORS_DOT_COUNT = 'web.transaction.errors.count' + UNKNOWN = 'unknown' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of V2MetricFilterName from a JSON string""" + return cls(json.loads(json_str)) + + @classmethod + def _missing_(cls, value): + """Handle unknown values""" + return cls.UNKNOWN + diff --git a/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_trace_attribute_filter_name.py b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_trace_attribute_filter_name.py new file mode 100644 index 00000000..3529a2cd --- /dev/null +++ b/thousandeyes-sdk-streaming/src/thousandeyes_sdk/streaming/models/v2_trace_attribute_filter_name.py @@ -0,0 +1,77 @@ +# coding: utf-8 + +""" + ThousandEyes for OpenTelemetry API + + **Note:** The following ThousandEyes for OpenTelemetry API capabilities are not available for ThousandEyes for Government instance: * Traces * Connected Devices * OTel-based integrations that rely on connectors and operations, including: * Splunk Cloud Platform HEC * Splunk Enterprise HEC * Splunk Observability APM * Dynatrace Observability APM ThousandEyes for OpenTelemetry provides machine-to-machine integration between ThousandEyes and its customers. It allows you to export ThousandEyes telemetry data in OTel format, which is widely used in the industry. With ThousandEyes for OTel, you can leverage frameworks widely used in the observability domain - such as Splunk, Grafana, and Honeycomb - to capture and analyze ThousandEyes data. Any client that supports OTel can use ThousandEyes for OpenTelemetry. ThousandEyes for OTel is made up of the following components: * Data streaming APIs that you can use to configure and enable your ThousandEyes tests with OTel-compatible streams, in particular to configure how ThousandEyes telemetry data is exported to client integrations. * A set of streaming pipelines called _collectors_ that actively fetch ThousandEyes network test data, enrich the data with some additional detail, filter, and push the data to the customer-configured endpoints, depending on what you configure via the public APIs. * Third-party OTel collectors that receive, transform, filter, and export different metrics to client applications such as AppD, or any other OTel-capable client configuration. For more information about ThousandEyes for OpenTelemetry, see the [product documentation](https://docs.thousandeyes.com/product-documentation/integration-guides/opentelemetry). + + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class V2TraceAttributeFilterName(str, Enum): + """ + V2TraceAttributeFilterName + """ + + """ + allowed enum values + """ + CLOUD_DOT_AVAILABILITY_ZONE = 'cloud.availability_zone' + CLOUD_DOT_PLATFORM = 'cloud.platform' + CLOUD_DOT_PROVIDER = 'cloud.provider' + CLOUD_DOT_REGION = 'cloud.region' + CLOUD_DOT_SERVICE = 'cloud.service' + ERROR_DOT_TYPE = 'error.type' + GEO_DOT_GEONAME_DOT_ID = 'geo.geoname.id' + HTTP_DOT_REQUEST_DOT_METHOD = 'http.request.method' + HTTP_DOT_RESPONSE_DOT_CODE = 'http.response.code' + META_DOT_SIGNAL_TYPE = 'meta.signal_type' + NETWORK_DOT_LOCAL_DOT_ADDRESS = 'network.local.address' + NETWORK_DOT_LOCAL_DOT_HOSTNAME = 'network.local.hostname' + NETWORK_DOT_LOCAL_DOT_PREFIX = 'network.local.prefix' + NETWORK_DOT_PATH_DOT_HOP = 'network.path.hop' + NETWORK_DOT_PEER_DOT_ADDRESS = 'network.peer.address' + NETWORK_DOT_PEER_DOT_ADDRESS_PREFIX = 'network.peer.address_prefix' + NETWORK_DOT_PEER_DOT_AS_DOT_NUMBER = 'network.peer.as.number' + NETWORK_DOT_PEER_DOT_HOSTNAME = 'network.peer.hostname' + OTEL_DOT_SCOPE_DOT_NAME = 'otel.scope.name' + SERVER_DOT_ADDRESS = 'server.address' + SERVER_DOT_PORT = 'server.port' + SERVICE_DOT_NAME = 'service.name' + STEP = 'step' + THOUSANDEYES_DOT_NETWORK_DOT_PATH_DOT_HOP_DOT_RTT_MS = 'thousandeyes.network.path.hop.rtt_ms' + THOUSANDEYES_DOT_PERMALINK = 'thousandeyes.permalink' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_GEO_DOT_COUNTRY_DOT_ISO_CODE = 'thousandeyes.source.agent.geo.country.iso_code' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_GEO_DOT_REGION_DOT_ISO_CODE = 'thousandeyes.source.agent.geo.region.iso_code' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_GEONAME_DOT_ID = 'thousandeyes.source.agent.geoname.id' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_ID = 'thousandeyes.source.agent.id' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_LOCATION = 'thousandeyes.source.agent.location' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_NAME = 'thousandeyes.source.agent.name' + THOUSANDEYES_DOT_SOURCE_DOT_AGENT_DOT_NETWORK_DOT_ADDRESS = 'thousandeyes.source.agent.network.address' + THOUSANDEYES_DOT_STREAM_DOT_NAME = 'thousandeyes.stream.name' + THOUSANDEYES_DOT_TEST_DOT_DOMAIN = 'thousandeyes.test.domain' + THOUSANDEYES_DOT_TEST_DOT_ID = 'thousandeyes.test.id' + THOUSANDEYES_DOT_TEST_DOT_NAME = 'thousandeyes.test.name' + THOUSANDEYES_DOT_TEST_DOT_TYPE = 'thousandeyes.test.type' + URL_DOT_FULL = 'url.full' + UNKNOWN = 'unknown' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of V2TraceAttributeFilterName from a JSON string""" + return cls(json.loads(json_str)) + + @classmethod + def _missing_(cls, value): + """Handle unknown values""" + return cls.UNKNOWN + diff --git a/thousandeyes-sdk-streaming/test/mock_manifest.py b/thousandeyes-sdk-streaming/test/mock_manifest.py index 12f09f49..d01e8b65 100644 --- a/thousandeyes-sdk-streaming/test/mock_manifest.py +++ b/thousandeyes-sdk-streaming/test/mock_manifest.py @@ -65,6 +65,12 @@ OPERATION_MANIFEST = { "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -147,6 +153,12 @@ OPERATION_MANIFEST = { "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -318,6 +330,12 @@ OPERATION_MANIFEST = { "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -442,6 +460,12 @@ OPERATION_MANIFEST = { "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -523,6 +547,12 @@ OPERATION_MANIFEST = { "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -660,6 +690,12 @@ OPERATION_MANIFEST = { "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -763,6 +799,12 @@ OPERATION_MANIFEST = { "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "customHeaders" : { diff --git a/thousandeyes-sdk-streaming/test/test_streaming_api.py b/thousandeyes-sdk-streaming/test/test_streaming_api.py index 930df5d5..3952b53e 100644 --- a/thousandeyes-sdk-streaming/test/test_streaming_api.py +++ b/thousandeyes-sdk-streaming/test/test_streaming_api.py @@ -65,6 +65,12 @@ class TestStreamingApi(unittest.TestCase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -143,6 +149,12 @@ class TestStreamingApi(unittest.TestCase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -239,6 +251,12 @@ class TestStreamingApi(unittest.TestCase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -332,6 +350,12 @@ class TestStreamingApi(unittest.TestCase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -413,6 +437,12 @@ class TestStreamingApi(unittest.TestCase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -521,6 +551,12 @@ class TestStreamingApi(unittest.TestCase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "customHeaders" : { @@ -576,6 +612,12 @@ class TestStreamingApi(unittest.TestCase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", diff --git a/thousandeyes-sdk-streaming/test/test_streaming_api_integration.py b/thousandeyes-sdk-streaming/test/test_streaming_api_integration.py index f832e486..b2fd800b 100644 --- a/thousandeyes-sdk-streaming/test/test_streaming_api_integration.py +++ b/thousandeyes-sdk-streaming/test/test_streaming_api_integration.py @@ -67,6 +67,12 @@ class TestStreamingApiIntegration(IntegrationTestBase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -142,6 +148,12 @@ class TestStreamingApiIntegration(IntegrationTestBase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -234,6 +246,12 @@ class TestStreamingApiIntegration(IntegrationTestBase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -330,6 +348,12 @@ class TestStreamingApiIntegration(IntegrationTestBase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -424,6 +448,12 @@ class TestStreamingApiIntegration(IntegrationTestBase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -520,6 +550,12 @@ class TestStreamingApiIntegration(IntegrationTestBase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -695,6 +731,12 @@ class TestStreamingApiIntegration(IntegrationTestBase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -857,6 +899,12 @@ class TestStreamingApiIntegration(IntegrationTestBase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -938,6 +986,12 @@ class TestStreamingApiIntegration(IntegrationTestBase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -1135,6 +1189,12 @@ class TestStreamingApiIntegration(IntegrationTestBase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "customHeaders" : { @@ -1188,6 +1248,12 @@ class TestStreamingApiIntegration(IntegrationTestBase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "type" : "opentelemetry", @@ -1303,6 +1369,12 @@ class TestStreamingApiIntegration(IntegrationTestBase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "customHeaders" : { @@ -1398,6 +1470,12 @@ class TestStreamingApiIntegration(IntegrationTestBase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "customHeaders" : { @@ -1491,6 +1569,12 @@ class TestStreamingApiIntegration(IntegrationTestBase): "filters" : { "testTypes" : { "values" : [ "agent-to-server", "bgp", "http-server" ] + }, + "attributesFilter" : { + "excludedAttributes" : [ "agent.name" ] + }, + "metricsFilter" : { + "excludedMetrics" : [ "http.metrics.availability" ] } }, "customHeaders" : { diff --git a/thousandeyes-sdk-tags/README.md b/thousandeyes-sdk-tags/README.md index 4e8dfc51..3bb06e22 100644 --- a/thousandeyes-sdk-tags/README.md +++ b/thousandeyes-sdk-tags/README.md @@ -16,7 +16,7 @@ Things to note with the ThousandEyes Tags API: This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-test-results/README.md b/thousandeyes-sdk-test-results/README.md index 5d18ceac..018e66e9 100644 --- a/thousandeyes-sdk-test-results/README.md +++ b/thousandeyes-sdk-test-results/README.md @@ -3,7 +3,7 @@ Get test result metrics for Network and Application Synthetics tests. This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-tests/README.md b/thousandeyes-sdk-tests/README.md index ea53a70f..ccf721d1 100644 --- a/thousandeyes-sdk-tests/README.md +++ b/thousandeyes-sdk-tests/README.md @@ -6,7 +6,7 @@ This API allows you to list, create, edit, and delete Network and Application Sy This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-usage/README.md b/thousandeyes-sdk-usage/README.md index 46795d8d..2a55d0c7 100644 --- a/thousandeyes-sdk-usage/README.md +++ b/thousandeyes-sdk-usage/README.md @@ -17,7 +17,7 @@ Refer to the Usage API operations for detailed usage instructions and optional p This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: -- API version: 7.0.104 +- API version: 7.0.105 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator