diff --git a/thousandeyes-sdk-administrative/README.md b/thousandeyes-sdk-administrative/README.md index 4baac6c0..610117bc 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.75 +- API version: 7.0.76 - 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 29abe896..9c1ec00d 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.75 +- API version: 7.0.76 - 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 6183c05f..ae6fcc56 100644 --- a/thousandeyes-sdk-alerts/README.md +++ b/thousandeyes-sdk-alerts/README.md @@ -12,7 +12,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.75 +- API version: 7.0.76 - 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 1eec1c95..fb953323 100644 --- a/thousandeyes-sdk-bgp-monitors/README.md +++ b/thousandeyes-sdk-bgp-monitors/README.md @@ -9,7 +9,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.75 +- API version: 7.0.76 - 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 5a955caa..eca35508 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.75 +- API version: 7.0.76 - 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 07d167f2..d0ffc20e 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.75 +- API version: 7.0.76 - 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 99d202e4..33b85df2 100644 --- a/thousandeyes-sdk-emulation/README.md +++ b/thousandeyes-sdk-emulation/README.md @@ -9,7 +9,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.75 +- API version: 7.0.76 - 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 f94b6775..4ebd82d0 100644 --- a/thousandeyes-sdk-endpoint-agents/.openapi-generator/FILES +++ b/thousandeyes-sdk-endpoint-agents/.openapi-generator/FILES @@ -13,9 +13,12 @@ docs/AgentThresholdFilters.md docs/AgentTransfer.md docs/AgentTransferRequest.md docs/AgentTransferStatus.md +docs/BatteryLevel.md +docs/BatteryMetrics.md docs/BrowserType.md docs/BulkAgentTransferRequest.md docs/BulkAgentTransferResponse.md +docs/CellularProfile.md docs/ConditionalOperator.md docs/ConnectionString.md docs/EndpointAgent.md @@ -69,9 +72,12 @@ src/thousandeyes_sdk/endpoint_agents/models/agent_threshold_filters.py src/thousandeyes_sdk/endpoint_agents/models/agent_transfer.py src/thousandeyes_sdk/endpoint_agents/models/agent_transfer_request.py src/thousandeyes_sdk/endpoint_agents/models/agent_transfer_status.py +src/thousandeyes_sdk/endpoint_agents/models/battery_level.py +src/thousandeyes_sdk/endpoint_agents/models/battery_metrics.py src/thousandeyes_sdk/endpoint_agents/models/browser_type.py src/thousandeyes_sdk/endpoint_agents/models/bulk_agent_transfer_request.py 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/endpoint_agent.py diff --git a/thousandeyes-sdk-endpoint-agents/README.md b/thousandeyes-sdk-endpoint-agents/README.md index 55caef08..497d96e8 100644 --- a/thousandeyes-sdk-endpoint-agents/README.md +++ b/thousandeyes-sdk-endpoint-agents/README.md @@ -5,7 +5,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.75 +- API version: 7.0.76 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator @@ -122,9 +122,12 @@ Class | Method | HTTP request | Description - [AgentTransfer](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/AgentTransfer.md) - [AgentTransferRequest](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/AgentTransferRequest.md) - [AgentTransferStatus](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/AgentTransferStatus.md) + - [BatteryLevel](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/BatteryLevel.md) + - [BatteryMetrics](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/BatteryMetrics.md) - [BrowserType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/BrowserType.md) - [BulkAgentTransferRequest](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/BulkAgentTransferRequest.md) - [BulkAgentTransferResponse](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/BulkAgentTransferResponse.md) + - [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) - [EndpointAgent](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-agents/docs/EndpointAgent.md) diff --git a/thousandeyes-sdk-endpoint-agents/docs/BatteryLevel.md b/thousandeyes-sdk-endpoint-agents/docs/BatteryLevel.md new file mode 100644 index 00000000..5703a2fe --- /dev/null +++ b/thousandeyes-sdk-endpoint-agents/docs/BatteryLevel.md @@ -0,0 +1,12 @@ +# BatteryLevel + +Battery level indicator. + +## 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-endpoint-agents/docs/BatteryMetrics.md b/thousandeyes-sdk-endpoint-agents/docs/BatteryMetrics.md new file mode 100644 index 00000000..edae7110 --- /dev/null +++ b/thousandeyes-sdk-endpoint-agents/docs/BatteryMetrics.md @@ -0,0 +1,31 @@ +# BatteryMetrics + +Battery metrics for the endpoint agent. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**battery_level** | [**BatteryLevel**](BatteryLevel.md) | | +**battery_level_normalized_percent** | **float** | Battery level as a normalized percentage (0-1). | + +## Example + +```python +from thousandeyes_sdk.endpoint_agents.models.battery_metrics import BatteryMetrics + +# TODO update the JSON string below +json = "{}" +# create an instance of BatteryMetrics from a JSON string +battery_metrics_instance = BatteryMetrics.from_json(json) +# print the JSON string representation of the object +print(BatteryMetrics.to_json()) + +# convert the object into a dict +battery_metrics_dict = battery_metrics_instance.to_dict() +# create an instance of BatteryMetrics from a dict +battery_metrics_from_dict = BatteryMetrics.from_dict(battery_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-endpoint-agents/docs/CellularProfile.md b/thousandeyes-sdk-endpoint-agents/docs/CellularProfile.md new file mode 100644 index 00000000..f4ba632d --- /dev/null +++ b/thousandeyes-sdk-endpoint-agents/docs/CellularProfile.md @@ -0,0 +1,39 @@ +# CellularProfile + +Cellular network profile information for a mobile endpoint agent. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**carrier_name** | **str** | Carrier name | [optional] +**network_gen** | **str** | Cellular network generation. | [optional] +**network_subtype** | **str** | A real network subtype. It may be different from an advertised network type. | [optional] +**advertised_network_gen** | **str** | Cellular network generation. | [optional] +**advertised_network_subtype** | **str** | Advertised Network subtype | [optional] +**rssi** | **float** | Received Signal Strength Indicator in dBm. Values are always negative. | [optional] +**rsrp** | **float** | Reference Signal Received Power in dBm. Values are always negative. | [optional] +**rscp** | **float** | Received Signal Code Power in dBm. Values are always negative or zero. | [optional] +**rsrq** | **float** | Reference Signal Received Quality in dBm. Values are always negative. | [optional] +**sinr** | **float** | Signal to Interference and Noise Ratio in dBm. It can be negative or positive. | [optional] + +## Example + +```python +from thousandeyes_sdk.endpoint_agents.models.cellular_profile import CellularProfile + +# TODO update the JSON string below +json = "{}" +# create an instance of CellularProfile from a JSON string +cellular_profile_instance = CellularProfile.from_json(json) +# print the JSON string representation of the object +print(CellularProfile.to_json()) + +# convert the object into a dict +cellular_profile_dict = cellular_profile_instance.to_dict() +# create an instance of CellularProfile from a dict +cellular_profile_from_dict = CellularProfile.from_dict(cellular_profile_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 33b794f2..6da19439 100644 --- a/thousandeyes-sdk-endpoint-agents/docs/EndpointAgent.md +++ b/thousandeyes-sdk-endpoint-agents/docs/EndpointAgent.md @@ -35,6 +35,8 @@ Name | Type | Description | Notes **license_type** | [**AgentLicenseType**](AgentLicenseType.md) | | [optional] **tcp_driver_available** | **bool** | Status of TCP test support on the agent. | [optional] [readonly] **npcap_version** | **str** | For Windows agents, the version of the NPCAP driver that the agent has loaded. | [optional] [readonly] +**battery_metrics** | [**BatteryMetrics**](BatteryMetrics.md) | | [optional] +**cellular_profile** | [**CellularProfile**](CellularProfile.md) | | [optional] **links** | [**SelfLinks**](SelfLinks.md) | | [optional] ## Example 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 afc6e64a..4367b10e 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 @@ -31,9 +31,12 @@ from thousandeyes_sdk.endpoint_agents.models.agent_threshold_filters import Agen from thousandeyes_sdk.endpoint_agents.models.agent_transfer import AgentTransfer from thousandeyes_sdk.endpoint_agents.models.agent_transfer_request import AgentTransferRequest from thousandeyes_sdk.endpoint_agents.models.agent_transfer_status import AgentTransferStatus +from thousandeyes_sdk.endpoint_agents.models.battery_level import BatteryLevel +from thousandeyes_sdk.endpoint_agents.models.battery_metrics import BatteryMetrics from thousandeyes_sdk.endpoint_agents.models.browser_type import BrowserType from thousandeyes_sdk.endpoint_agents.models.bulk_agent_transfer_request import BulkAgentTransferRequest from thousandeyes_sdk.endpoint_agents.models.bulk_agent_transfer_response import BulkAgentTransferResponse +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.endpoint_agent import EndpointAgent 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 f7a5d1d5..27f572d6 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 @@ -25,9 +25,12 @@ from thousandeyes_sdk.endpoint_agents.models.agent_threshold_filters import Agen from thousandeyes_sdk.endpoint_agents.models.agent_transfer import AgentTransfer from thousandeyes_sdk.endpoint_agents.models.agent_transfer_request import AgentTransferRequest from thousandeyes_sdk.endpoint_agents.models.agent_transfer_status import AgentTransferStatus +from thousandeyes_sdk.endpoint_agents.models.battery_level import BatteryLevel +from thousandeyes_sdk.endpoint_agents.models.battery_metrics import BatteryMetrics from thousandeyes_sdk.endpoint_agents.models.browser_type import BrowserType from thousandeyes_sdk.endpoint_agents.models.bulk_agent_transfer_request import BulkAgentTransferRequest from thousandeyes_sdk.endpoint_agents.models.bulk_agent_transfer_response import BulkAgentTransferResponse +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.endpoint_agent import EndpointAgent diff --git a/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/battery_level.py b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/battery_level.py new file mode 100644 index 00000000..f911b60e --- /dev/null +++ b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/battery_level.py @@ -0,0 +1,42 @@ +# coding: utf-8 + +""" + Endpoint Agents API + + 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 json +from enum import Enum +from typing_extensions import Self + + +class BatteryLevel(str, Enum): + """ + Battery level indicator. + """ + + """ + allowed enum values + """ + HIGH = 'high' + MEDIUM = 'medium' + LOW = 'low' + UNKNOWN = 'unknown' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of BatteryLevel 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-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/battery_metrics.py b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/battery_metrics.py new file mode 100644 index 00000000..5e0f15ad --- /dev/null +++ b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/battery_metrics.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" + Endpoint Agents API + + 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 +from typing import Any, ClassVar, Dict, List, Union +from typing_extensions import Annotated +from thousandeyes_sdk.endpoint_agents.models.battery_level import BatteryLevel +from typing import Optional, Set +from typing_extensions import Self + +class BatteryMetrics(BaseModel): + """ + Battery metrics for the endpoint agent. + """ # noqa: E501 + battery_level: BatteryLevel = Field(alias="batteryLevel") + battery_level_normalized_percent: Union[Annotated[float, Field(le=1, strict=True, ge=0)], Annotated[int, Field(le=1, strict=True, ge=0)]] = Field(description="Battery level as a normalized percentage (0-1).", alias="batteryLevelNormalizedPercent") + __properties: ClassVar[List[str]] = ["batteryLevel", "batteryLevelNormalizedPercent"] + + 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 BatteryMetrics 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 BatteryMetrics from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "batteryLevel": obj.get("batteryLevel"), + "batteryLevelNormalizedPercent": obj.get("batteryLevelNormalizedPercent") + }) + return _obj + + diff --git a/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/cellular_profile.py b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/cellular_profile.py new file mode 100644 index 00000000..561c48d0 --- /dev/null +++ b/thousandeyes-sdk-endpoint-agents/src/thousandeyes_sdk/endpoint_agents/models/cellular_profile.py @@ -0,0 +1,105 @@ +# coding: utf-8 + +""" + Endpoint Agents API + + 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, StrictFloat, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing import Optional, Set +from typing_extensions import Self + +class CellularProfile(BaseModel): + """ + Cellular network profile information for a mobile endpoint agent. + """ # noqa: E501 + carrier_name: Optional[StrictStr] = Field(default=None, description="Carrier name", alias="carrierName") + network_gen: Optional[StrictStr] = Field(default=None, description="Cellular network generation.", alias="networkGen") + network_subtype: Optional[StrictStr] = Field(default=None, description="A real network subtype. It may be different from an advertised network type.", alias="networkSubtype") + advertised_network_gen: Optional[StrictStr] = Field(default=None, description="Cellular network generation.", alias="advertisedNetworkGen") + advertised_network_subtype: Optional[StrictStr] = Field(default=None, description="Advertised Network subtype", alias="advertisedNetworkSubtype") + rssi: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Received Signal Strength Indicator in dBm. Values are always negative.") + rsrp: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Reference Signal Received Power in dBm. Values are always negative.") + rscp: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Received Signal Code Power in dBm. Values are always negative or zero.") + rsrq: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Reference Signal Received Quality in dBm. Values are always negative.") + sinr: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Signal to Interference and Noise Ratio in dBm. It can be negative or positive.") + __properties: ClassVar[List[str]] = ["carrierName", "networkGen", "networkSubtype", "advertisedNetworkGen", "advertisedNetworkSubtype", "rssi", "rsrp", "rscp", "rsrq", "sinr"] + + 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 CellularProfile 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 CellularProfile from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "carrierName": obj.get("carrierName"), + "networkGen": obj.get("networkGen"), + "networkSubtype": obj.get("networkSubtype"), + "advertisedNetworkGen": obj.get("advertisedNetworkGen"), + "advertisedNetworkSubtype": obj.get("advertisedNetworkSubtype"), + "rssi": obj.get("rssi"), + "rsrp": obj.get("rsrp"), + "rscp": obj.get("rscp"), + "rsrq": obj.get("rsrq"), + "sinr": obj.get("sinr") + }) + 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 58746c04..942d7800 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,6 +20,8 @@ from datetime import datetime from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional 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.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 @@ -65,8 +67,10 @@ class EndpointAgent(BaseModel): license_type: Optional[AgentLicenseType] = Field(default=None, alias="licenseType") tcp_driver_available: Optional[StrictBool] = Field(default=None, description="Status of TCP test support on the agent.", alias="tcpDriverAvailable") npcap_version: Optional[StrictStr] = Field(default=None, description="For Windows agents, the version of the NPCAP driver that the agent has loaded.", alias="npcapVersion") + 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", "osVersion", "platform", "kernelVersion", "manufacturer", "model", "serialNumber", "lastSeen", "status", "deleted", "version", "targetVersion", "createdAt", "numberOfClients", "publicIP", "location", "clients", "totalMemory", "agentType", "vpnProfiles", "externalMetadata", "networkInterfaceProfiles", "asnDetails", "licenseType", "tcpDriverAvailable", "npcapVersion", "_links"] + __properties: ClassVar[List[str]] = ["id", "aid", "name", "computerName", "osVersion", "platform", "kernelVersion", "manufacturer", "model", "serialNumber", "lastSeen", "status", "deleted", "version", "targetVersion", "createdAt", "numberOfClients", "publicIP", "location", "clients", "totalMemory", "agentType", "vpnProfiles", "externalMetadata", "networkInterfaceProfiles", "asnDetails", "licenseType", "tcpDriverAvailable", "npcapVersion", "batteryMetrics", "cellularProfile", "_links"] model_config = ConfigDict( populate_by_name=True, @@ -184,6 +188,12 @@ class EndpointAgent(BaseModel): # override the default output from pydantic by calling `to_dict()` of asn_details if self.asn_details: _dict['asnDetails'] = self.asn_details.to_dict() + # override the default output from pydantic by calling `to_dict()` of battery_metrics + if self.battery_metrics: + _dict['batteryMetrics'] = self.battery_metrics.to_dict() + # override the default output from pydantic by calling `to_dict()` of cellular_profile + if self.cellular_profile: + _dict['cellularProfile'] = self.cellular_profile.to_dict() # override the default output from pydantic by calling `to_dict()` of links if self.links: _dict['_links'] = self.links.to_dict() @@ -228,6 +238,8 @@ class EndpointAgent(BaseModel): "licenseType": obj.get("licenseType"), "tcpDriverAvailable": obj.get("tcpDriverAvailable"), "npcapVersion": obj.get("npcapVersion"), + "batteryMetrics": BatteryMetrics.from_dict(obj["batteryMetrics"]) if obj.get("batteryMetrics") is not None else None, + "cellularProfile": CellularProfile.from_dict(obj["cellularProfile"]) if obj.get("cellularProfile") is not None else None, "_links": SelfLinks.from_dict(obj["_links"]) if obj.get("_links") is not None else None }) return _obj 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 3fc03ecf..15fcf8b0 100644 --- a/thousandeyes-sdk-endpoint-agents/test/test_endpoint_agents_api.py +++ b/thousandeyes-sdk-endpoint-agents/test/test_endpoint_agents_api.py @@ -96,11 +96,27 @@ class TestEndpointAgentsApi(unittest.TestCase): "title" : "title" } }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "publicIP" : "88.45.2.123", "tcpDriverAvailable" : true, "platform" : "mac", "manufacturer" : "Apple, Inc.", "targetVersion" : "0.123.4", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "createdAt" : "2022-05-26T23:37:16Z", "numberOfClients" : 3, "licenseType" : "essentials", @@ -265,11 +281,27 @@ class TestEndpointAgentsApi(unittest.TestCase): "title" : "title" } }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "publicIP" : "88.45.2.123", "tcpDriverAvailable" : true, "platform" : "mac", "manufacturer" : "Apple, Inc.", "targetVersion" : "0.123.4", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "createdAt" : "2022-05-26T23:37:16Z", "numberOfClients" : 3, "licenseType" : "essentials", @@ -489,11 +521,27 @@ class TestEndpointAgentsApi(unittest.TestCase): "title" : "title" } }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "publicIP" : "88.45.2.123", "tcpDriverAvailable" : true, "platform" : "mac", "manufacturer" : "Apple, Inc.", "targetVersion" : "0.123.4", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "createdAt" : "2022-05-26T23:37:16Z", "numberOfClients" : 3, "licenseType" : "essentials", @@ -648,11 +696,27 @@ class TestEndpointAgentsApi(unittest.TestCase): "title" : "title" } }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "publicIP" : "88.45.2.123", "tcpDriverAvailable" : true, "platform" : "mac", "manufacturer" : "Apple, Inc.", "targetVersion" : "0.123.4", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "createdAt" : "2022-05-26T23:37:16Z", "numberOfClients" : 3, "licenseType" : "essentials", @@ -818,11 +882,27 @@ class TestEndpointAgentsApi(unittest.TestCase): "title" : "title" } }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "publicIP" : "88.45.2.123", "tcpDriverAvailable" : true, "platform" : "mac", "manufacturer" : "Apple, Inc.", "targetVersion" : "0.123.4", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "createdAt" : "2022-05-26T23:37:16Z", "numberOfClients" : 3, "licenseType" : "essentials", @@ -1011,11 +1091,27 @@ class TestEndpointAgentsApi(unittest.TestCase): "title" : "title" } }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "publicIP" : "88.45.2.123", "tcpDriverAvailable" : true, "platform" : "mac", "manufacturer" : "Apple, Inc.", "targetVersion" : "0.123.4", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "createdAt" : "2022-05-26T23:37:16Z", "numberOfClients" : 3, "licenseType" : "essentials", @@ -1170,11 +1266,27 @@ class TestEndpointAgentsApi(unittest.TestCase): "title" : "title" } }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "publicIP" : "88.45.2.123", "tcpDriverAvailable" : true, "platform" : "mac", "manufacturer" : "Apple, Inc.", "targetVersion" : "0.123.4", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "createdAt" : "2022-05-26T23:37:16Z", "numberOfClients" : 3, "licenseType" : "essentials", @@ -1373,11 +1485,27 @@ class TestEndpointAgentsApi(unittest.TestCase): "title" : "title" } }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "publicIP" : "88.45.2.123", "tcpDriverAvailable" : true, "platform" : "mac", "manufacturer" : "Apple, Inc.", "targetVersion" : "0.123.4", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "createdAt" : "2022-05-26T23:37:16Z", "numberOfClients" : 3, "licenseType" : "essentials", diff --git a/thousandeyes-sdk-endpoint-instant-tests/README.md b/thousandeyes-sdk-endpoint-instant-tests/README.md index 5728a842..1f77479d 100644 --- a/thousandeyes-sdk-endpoint-instant-tests/README.md +++ b/thousandeyes-sdk-endpoint-instant-tests/README.md @@ -13,7 +13,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.75 +- API version: 7.0.76 - 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 344dec67..e184ef8c 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.75 +- API version: 7.0.76 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-endpoint-test-results/.openapi-generator/FILES b/thousandeyes-sdk-endpoint-test-results/.openapi-generator/FILES index 004e8739..121ee00a 100644 --- a/thousandeyes-sdk-endpoint-test-results/.openapi-generator/FILES +++ b/thousandeyes-sdk-endpoint-test-results/.openapi-generator/FILES @@ -4,6 +4,9 @@ README.md docs/ApplicationMetrics.md docs/ApplicationScoreQuality.md docs/AsnDetails.md +docs/BatteryLevel.md +docs/BatteryMetrics.md +docs/CellularProfile.md docs/ConditionalOperator.md docs/CpuUtilization.md docs/DynamicBaseEndpointTestResult.md @@ -174,6 +177,9 @@ src/thousandeyes_sdk/endpoint_test_results/models/__init__.py src/thousandeyes_sdk/endpoint_test_results/models/application_metrics.py src/thousandeyes_sdk/endpoint_test_results/models/application_score_quality.py src/thousandeyes_sdk/endpoint_test_results/models/asn_details.py +src/thousandeyes_sdk/endpoint_test_results/models/battery_level.py +src/thousandeyes_sdk/endpoint_test_results/models/battery_metrics.py +src/thousandeyes_sdk/endpoint_test_results/models/cellular_profile.py src/thousandeyes_sdk/endpoint_test_results/models/conditional_operator.py src/thousandeyes_sdk/endpoint_test_results/models/cpu_utilization.py src/thousandeyes_sdk/endpoint_test_results/models/dynamic_base_endpoint_test_result.py diff --git a/thousandeyes-sdk-endpoint-test-results/README.md b/thousandeyes-sdk-endpoint-test-results/README.md index 9be5519d..42c9729d 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.75 +- API version: 7.0.76 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator @@ -125,6 +125,9 @@ Class | Method | HTTP request | Description - [ApplicationMetrics](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-test-results/docs/ApplicationMetrics.md) - [ApplicationScoreQuality](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-test-results/docs/ApplicationScoreQuality.md) - [AsnDetails](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-test-results/docs/AsnDetails.md) + - [BatteryLevel](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-test-results/docs/BatteryLevel.md) + - [BatteryMetrics](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-test-results/docs/BatteryMetrics.md) + - [CellularProfile](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-test-results/docs/CellularProfile.md) - [ConditionalOperator](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-test-results/docs/ConditionalOperator.md) - [CpuUtilization](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-test-results/docs/CpuUtilization.md) - [DynamicBaseEndpointTestResult](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-test-results/docs/DynamicBaseEndpointTestResult.md) diff --git a/thousandeyes-sdk-endpoint-test-results/docs/BatteryLevel.md b/thousandeyes-sdk-endpoint-test-results/docs/BatteryLevel.md new file mode 100644 index 00000000..5703a2fe --- /dev/null +++ b/thousandeyes-sdk-endpoint-test-results/docs/BatteryLevel.md @@ -0,0 +1,12 @@ +# BatteryLevel + +Battery level indicator. + +## 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-endpoint-test-results/docs/BatteryMetrics.md b/thousandeyes-sdk-endpoint-test-results/docs/BatteryMetrics.md new file mode 100644 index 00000000..3ba65639 --- /dev/null +++ b/thousandeyes-sdk-endpoint-test-results/docs/BatteryMetrics.md @@ -0,0 +1,31 @@ +# BatteryMetrics + +Battery metrics for the endpoint agent. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**battery_level** | [**BatteryLevel**](BatteryLevel.md) | | +**battery_level_normalized_percent** | **float** | Battery level as a normalized percentage (0-1). | + +## Example + +```python +from thousandeyes_sdk.endpoint_test_results.models.battery_metrics import BatteryMetrics + +# TODO update the JSON string below +json = "{}" +# create an instance of BatteryMetrics from a JSON string +battery_metrics_instance = BatteryMetrics.from_json(json) +# print the JSON string representation of the object +print(BatteryMetrics.to_json()) + +# convert the object into a dict +battery_metrics_dict = battery_metrics_instance.to_dict() +# create an instance of BatteryMetrics from a dict +battery_metrics_from_dict = BatteryMetrics.from_dict(battery_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-endpoint-test-results/docs/CellularProfile.md b/thousandeyes-sdk-endpoint-test-results/docs/CellularProfile.md new file mode 100644 index 00000000..02ecf723 --- /dev/null +++ b/thousandeyes-sdk-endpoint-test-results/docs/CellularProfile.md @@ -0,0 +1,39 @@ +# CellularProfile + +Cellular network profile information for a mobile endpoint agent. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**carrier_name** | **str** | Carrier name | [optional] +**network_gen** | **str** | Cellular network generation. | [optional] +**network_subtype** | **str** | A real network subtype. It may be different from an advertised network type. | [optional] +**advertised_network_gen** | **str** | Cellular network generation. | [optional] +**advertised_network_subtype** | **str** | Advertised Network subtype | [optional] +**rssi** | **float** | Received Signal Strength Indicator in dBm. Values are always negative. | [optional] +**rsrp** | **float** | Reference Signal Received Power in dBm. Values are always negative. | [optional] +**rscp** | **float** | Received Signal Code Power in dBm. Values are always negative or zero. | [optional] +**rsrq** | **float** | Reference Signal Received Quality in dBm. Values are always negative. | [optional] +**sinr** | **float** | Signal to Interference and Noise Ratio in dBm. It can be negative or positive. | [optional] + +## Example + +```python +from thousandeyes_sdk.endpoint_test_results.models.cellular_profile import CellularProfile + +# TODO update the JSON string below +json = "{}" +# create an instance of CellularProfile from a JSON string +cellular_profile_instance = CellularProfile.from_json(json) +# print the JSON string representation of the object +print(CellularProfile.to_json()) + +# convert the object into a dict +cellular_profile_dict = cellular_profile_instance.to_dict() +# create an instance of CellularProfile from a dict +cellular_profile_from_dict = CellularProfile.from_dict(cellular_profile_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-test-results/docs/EndpointTestResult.md b/thousandeyes-sdk-endpoint-test-results/docs/EndpointTestResult.md index 6469a741..f79d8f29 100644 --- a/thousandeyes-sdk-endpoint-test-results/docs/EndpointTestResult.md +++ b/thousandeyes-sdk-endpoint-test-results/docs/EndpointTestResult.md @@ -15,6 +15,9 @@ Name | Type | Description | Notes **original_target_profile** | [**TargetProfile**](TargetProfile.md) | | [optional] **user_profile** | [**UserProfile**](UserProfile.md) | | [optional] **vpn_profile** | [**VpnProfile**](VpnProfile.md) | | [optional] +**battery_metrics** | [**BatteryMetrics**](BatteryMetrics.md) | | [optional] +**cellular_profile** | [**CellularProfile**](CellularProfile.md) | | [optional] +**platform** | [**Platform**](Platform.md) | | [optional] ## Example diff --git a/thousandeyes-sdk-endpoint-test-results/docs/HttpEndpointTestResult.md b/thousandeyes-sdk-endpoint-test-results/docs/HttpEndpointTestResult.md index 06314f9d..63529b3b 100644 --- a/thousandeyes-sdk-endpoint-test-results/docs/HttpEndpointTestResult.md +++ b/thousandeyes-sdk-endpoint-test-results/docs/HttpEndpointTestResult.md @@ -15,6 +15,9 @@ Name | Type | Description | Notes **original_target_profile** | [**TargetProfile**](TargetProfile.md) | | [optional] **user_profile** | [**UserProfile**](UserProfile.md) | | [optional] **vpn_profile** | [**VpnProfile**](VpnProfile.md) | | [optional] +**battery_metrics** | [**BatteryMetrics**](BatteryMetrics.md) | | [optional] +**cellular_profile** | [**CellularProfile**](CellularProfile.md) | | [optional] +**platform** | [**Platform**](Platform.md) | | [optional] **score** | [**EndpointHttpDataPointScore**](EndpointHttpDataPointScore.md) | | [optional] **connect_time** | **int** | Time required to establish a TCP connection to the server in milliseconds. | [optional] [readonly] **dns_time** | **int** | Time required to resolve DNS in milliseconds. | [optional] [readonly] diff --git a/thousandeyes-sdk-endpoint-test-results/docs/LocalNetworkTopologyResult.md b/thousandeyes-sdk-endpoint-test-results/docs/LocalNetworkTopologyResult.md index a54f20eb..955da4be 100644 --- a/thousandeyes-sdk-endpoint-test-results/docs/LocalNetworkTopologyResult.md +++ b/thousandeyes-sdk-endpoint-test-results/docs/LocalNetworkTopologyResult.md @@ -22,6 +22,9 @@ Name | Type | Description | Notes **proxy_score** | [**EndpointProbeProxyScore**](EndpointProbeProxyScore.md) | | [optional] **connection_score** | [**EndpointProbeConnectionScore**](EndpointProbeConnectionScore.md) | | [optional] **agent_score** | [**EndpointProbeAgentScore**](EndpointProbeAgentScore.md) | | [optional] +**battery_metrics** | [**BatteryMetrics**](BatteryMetrics.md) | | [optional] +**cellular_profile** | [**CellularProfile**](CellularProfile.md) | | [optional] +**platform** | [**Platform**](Platform.md) | | [optional] **coordinates** | [**RealUserEndpointTestCoordinates**](RealUserEndpointTestCoordinates.md) | | [optional] **network_profile** | [**NetworkProfile**](NetworkProfile.md) | | [optional] **icmp_traceroute** | [**Traceroute**](Traceroute.md) | | [optional] diff --git a/thousandeyes-sdk-endpoint-test-results/docs/LocalNetworkTopologyResultBase.md b/thousandeyes-sdk-endpoint-test-results/docs/LocalNetworkTopologyResultBase.md index 8139ac31..871cf85d 100644 --- a/thousandeyes-sdk-endpoint-test-results/docs/LocalNetworkTopologyResultBase.md +++ b/thousandeyes-sdk-endpoint-test-results/docs/LocalNetworkTopologyResultBase.md @@ -22,6 +22,9 @@ Name | Type | Description | Notes **proxy_score** | [**EndpointProbeProxyScore**](EndpointProbeProxyScore.md) | | [optional] **connection_score** | [**EndpointProbeConnectionScore**](EndpointProbeConnectionScore.md) | | [optional] **agent_score** | [**EndpointProbeAgentScore**](EndpointProbeAgentScore.md) | | [optional] +**battery_metrics** | [**BatteryMetrics**](BatteryMetrics.md) | | [optional] +**cellular_profile** | [**CellularProfile**](CellularProfile.md) | | [optional] +**platform** | [**Platform**](Platform.md) | | [optional] ## Example diff --git a/thousandeyes-sdk-endpoint-test-results/docs/NetworkDynamicEndpointTestResult.md b/thousandeyes-sdk-endpoint-test-results/docs/NetworkDynamicEndpointTestResult.md index 4a46b09d..da0c074d 100644 --- a/thousandeyes-sdk-endpoint-test-results/docs/NetworkDynamicEndpointTestResult.md +++ b/thousandeyes-sdk-endpoint-test-results/docs/NetworkDynamicEndpointTestResult.md @@ -15,6 +15,9 @@ Name | Type | Description | Notes **original_target_profile** | [**TargetProfile**](TargetProfile.md) | | [optional] **user_profile** | [**UserProfile**](UserProfile.md) | | [optional] **vpn_profile** | [**VpnProfile**](VpnProfile.md) | | [optional] +**battery_metrics** | [**BatteryMetrics**](BatteryMetrics.md) | | [optional] +**cellular_profile** | [**CellularProfile**](CellularProfile.md) | | [optional] +**platform** | [**Platform**](Platform.md) | | [optional] **avg_latency** | **float** | Average RTT for packets sent to destination. | [optional] [readonly] **error_details** | **str** | Error details, if an error was encountered. | [optional] [readonly] **jitter** | **float** | Standard deviation of latency. | [optional] [readonly] diff --git a/thousandeyes-sdk-endpoint-test-results/docs/NetworkEndpointTestResult.md b/thousandeyes-sdk-endpoint-test-results/docs/NetworkEndpointTestResult.md index adfa5e87..67269924 100644 --- a/thousandeyes-sdk-endpoint-test-results/docs/NetworkEndpointTestResult.md +++ b/thousandeyes-sdk-endpoint-test-results/docs/NetworkEndpointTestResult.md @@ -15,6 +15,9 @@ Name | Type | Description | Notes **original_target_profile** | [**TargetProfile**](TargetProfile.md) | | [optional] **user_profile** | [**UserProfile**](UserProfile.md) | | [optional] **vpn_profile** | [**VpnProfile**](VpnProfile.md) | | [optional] +**battery_metrics** | [**BatteryMetrics**](BatteryMetrics.md) | | [optional] +**cellular_profile** | [**CellularProfile**](CellularProfile.md) | | [optional] +**platform** | [**Platform**](Platform.md) | | [optional] **avg_latency** | **float** | Average RTT for packets sent to destination. | [optional] [readonly] **error_details** | **str** | Error details, if an error was encountered. | [optional] [readonly] **jitter** | **float** | Standard deviation of latency. | [optional] [readonly] diff --git a/thousandeyes-sdk-endpoint-test-results/docs/PathVisBaseEndpointTestResult.md b/thousandeyes-sdk-endpoint-test-results/docs/PathVisBaseEndpointTestResult.md index b043aeef..5f95d2fa 100644 --- a/thousandeyes-sdk-endpoint-test-results/docs/PathVisBaseEndpointTestResult.md +++ b/thousandeyes-sdk-endpoint-test-results/docs/PathVisBaseEndpointTestResult.md @@ -15,6 +15,9 @@ Name | Type | Description | Notes **original_target_profile** | [**TargetProfile**](TargetProfile.md) | | [optional] **user_profile** | [**UserProfile**](UserProfile.md) | | [optional] **vpn_profile** | [**VpnProfile**](VpnProfile.md) | | [optional] +**battery_metrics** | [**BatteryMetrics**](BatteryMetrics.md) | | [optional] +**cellular_profile** | [**CellularProfile**](CellularProfile.md) | | [optional] +**platform** | [**Platform**](Platform.md) | | [optional] **asn_details** | [**AsnDetails**](AsnDetails.md) | | [optional] **server** | **str** | Target server, including port. | [optional] [readonly] **source_ip** | **str** | IP address of source endpoint agent. | [optional] [readonly] diff --git a/thousandeyes-sdk-endpoint-test-results/docs/PathVisDetailDynamicEndpointTestResult.md b/thousandeyes-sdk-endpoint-test-results/docs/PathVisDetailDynamicEndpointTestResult.md index db9d7884..4dfadb5b 100644 --- a/thousandeyes-sdk-endpoint-test-results/docs/PathVisDetailDynamicEndpointTestResult.md +++ b/thousandeyes-sdk-endpoint-test-results/docs/PathVisDetailDynamicEndpointTestResult.md @@ -15,6 +15,9 @@ Name | Type | Description | Notes **original_target_profile** | [**TargetProfile**](TargetProfile.md) | | [optional] **user_profile** | [**UserProfile**](UserProfile.md) | | [optional] **vpn_profile** | [**VpnProfile**](VpnProfile.md) | | [optional] +**battery_metrics** | [**BatteryMetrics**](BatteryMetrics.md) | | [optional] +**cellular_profile** | [**CellularProfile**](CellularProfile.md) | | [optional] +**platform** | [**Platform**](Platform.md) | | [optional] **asn_details** | [**AsnDetails**](AsnDetails.md) | | [optional] **server** | **str** | Target server, including port. | [optional] [readonly] **source_ip** | **str** | IP address of source endpoint agent. | [optional] [readonly] diff --git a/thousandeyes-sdk-endpoint-test-results/docs/PathVisDetailEndpointTestResult.md b/thousandeyes-sdk-endpoint-test-results/docs/PathVisDetailEndpointTestResult.md index 5b5ef5ef..3a266bf2 100644 --- a/thousandeyes-sdk-endpoint-test-results/docs/PathVisDetailEndpointTestResult.md +++ b/thousandeyes-sdk-endpoint-test-results/docs/PathVisDetailEndpointTestResult.md @@ -15,6 +15,9 @@ Name | Type | Description | Notes **original_target_profile** | [**TargetProfile**](TargetProfile.md) | | [optional] **user_profile** | [**UserProfile**](UserProfile.md) | | [optional] **vpn_profile** | [**VpnProfile**](VpnProfile.md) | | [optional] +**battery_metrics** | [**BatteryMetrics**](BatteryMetrics.md) | | [optional] +**cellular_profile** | [**CellularProfile**](CellularProfile.md) | | [optional] +**platform** | [**Platform**](Platform.md) | | [optional] **asn_details** | [**AsnDetails**](AsnDetails.md) | | [optional] **server** | **str** | Target server, including port. | [optional] [readonly] **source_ip** | **str** | IP address of source endpoint agent. | [optional] [readonly] diff --git a/thousandeyes-sdk-endpoint-test-results/docs/PathVisDynamicEndpointTestResult.md b/thousandeyes-sdk-endpoint-test-results/docs/PathVisDynamicEndpointTestResult.md index 37123032..fe5092f4 100644 --- a/thousandeyes-sdk-endpoint-test-results/docs/PathVisDynamicEndpointTestResult.md +++ b/thousandeyes-sdk-endpoint-test-results/docs/PathVisDynamicEndpointTestResult.md @@ -15,6 +15,9 @@ Name | Type | Description | Notes **original_target_profile** | [**TargetProfile**](TargetProfile.md) | | [optional] **user_profile** | [**UserProfile**](UserProfile.md) | | [optional] **vpn_profile** | [**VpnProfile**](VpnProfile.md) | | [optional] +**battery_metrics** | [**BatteryMetrics**](BatteryMetrics.md) | | [optional] +**cellular_profile** | [**CellularProfile**](CellularProfile.md) | | [optional] +**platform** | [**Platform**](Platform.md) | | [optional] **asn_details** | [**AsnDetails**](AsnDetails.md) | | [optional] **server** | **str** | Target server, including port. | [optional] [readonly] **source_ip** | **str** | IP address of source endpoint agent. | [optional] [readonly] diff --git a/thousandeyes-sdk-endpoint-test-results/docs/PathVisEndpointTestResult.md b/thousandeyes-sdk-endpoint-test-results/docs/PathVisEndpointTestResult.md index f4939fd1..83bb7820 100644 --- a/thousandeyes-sdk-endpoint-test-results/docs/PathVisEndpointTestResult.md +++ b/thousandeyes-sdk-endpoint-test-results/docs/PathVisEndpointTestResult.md @@ -15,6 +15,9 @@ Name | Type | Description | Notes **original_target_profile** | [**TargetProfile**](TargetProfile.md) | | [optional] **user_profile** | [**UserProfile**](UserProfile.md) | | [optional] **vpn_profile** | [**VpnProfile**](VpnProfile.md) | | [optional] +**battery_metrics** | [**BatteryMetrics**](BatteryMetrics.md) | | [optional] +**cellular_profile** | [**CellularProfile**](CellularProfile.md) | | [optional] +**platform** | [**Platform**](Platform.md) | | [optional] **asn_details** | [**AsnDetails**](AsnDetails.md) | | [optional] **server** | **str** | Target server, including port. | [optional] [readonly] **source_ip** | **str** | IP address of source endpoint agent. | [optional] [readonly] diff --git a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/__init__.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/__init__.py index 692df1d4..f6984f17 100644 --- a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/__init__.py +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/__init__.py @@ -25,6 +25,9 @@ from thousandeyes_sdk.endpoint_test_results.api.real_user_endpoint_test_results_ from thousandeyes_sdk.endpoint_test_results.models.application_metrics import ApplicationMetrics from thousandeyes_sdk.endpoint_test_results.models.application_score_quality import ApplicationScoreQuality from thousandeyes_sdk.endpoint_test_results.models.asn_details import AsnDetails +from thousandeyes_sdk.endpoint_test_results.models.battery_level import BatteryLevel +from thousandeyes_sdk.endpoint_test_results.models.battery_metrics import BatteryMetrics +from thousandeyes_sdk.endpoint_test_results.models.cellular_profile import CellularProfile from thousandeyes_sdk.endpoint_test_results.models.conditional_operator import ConditionalOperator from thousandeyes_sdk.endpoint_test_results.models.cpu_utilization import CpuUtilization from thousandeyes_sdk.endpoint_test_results.models.dynamic_base_endpoint_test_result import DynamicBaseEndpointTestResult diff --git a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/__init__.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/__init__.py index fb020255..9ab3092d 100644 --- a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/__init__.py +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/__init__.py @@ -16,6 +16,9 @@ from thousandeyes_sdk.endpoint_test_results.models.application_metrics import ApplicationMetrics from thousandeyes_sdk.endpoint_test_results.models.application_score_quality import ApplicationScoreQuality from thousandeyes_sdk.endpoint_test_results.models.asn_details import AsnDetails +from thousandeyes_sdk.endpoint_test_results.models.battery_level import BatteryLevel +from thousandeyes_sdk.endpoint_test_results.models.battery_metrics import BatteryMetrics +from thousandeyes_sdk.endpoint_test_results.models.cellular_profile import CellularProfile from thousandeyes_sdk.endpoint_test_results.models.conditional_operator import ConditionalOperator from thousandeyes_sdk.endpoint_test_results.models.cpu_utilization import CpuUtilization from thousandeyes_sdk.endpoint_test_results.models.dynamic_base_endpoint_test_result import DynamicBaseEndpointTestResult diff --git a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/battery_level.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/battery_level.py new file mode 100644 index 00000000..053d8460 --- /dev/null +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/battery_level.py @@ -0,0 +1,42 @@ +# coding: utf-8 + +""" + Endpoint Test Results API + + Retrieve results for scheduled and dynamic tests on endpoint agents. + + 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 BatteryLevel(str, Enum): + """ + Battery level indicator. + """ + + """ + allowed enum values + """ + HIGH = 'high' + MEDIUM = 'medium' + LOW = 'low' + UNKNOWN = 'unknown' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of BatteryLevel 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-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/battery_metrics.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/battery_metrics.py new file mode 100644 index 00000000..fda56e28 --- /dev/null +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/battery_metrics.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" + Endpoint Test Results API + + Retrieve results for scheduled and dynamic tests on 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 +from typing import Any, ClassVar, Dict, List, Union +from typing_extensions import Annotated +from thousandeyes_sdk.endpoint_test_results.models.battery_level import BatteryLevel +from typing import Optional, Set +from typing_extensions import Self + +class BatteryMetrics(BaseModel): + """ + Battery metrics for the endpoint agent. + """ # noqa: E501 + battery_level: BatteryLevel = Field(alias="batteryLevel") + battery_level_normalized_percent: Union[Annotated[float, Field(le=1, strict=True, ge=0)], Annotated[int, Field(le=1, strict=True, ge=0)]] = Field(description="Battery level as a normalized percentage (0-1).", alias="batteryLevelNormalizedPercent") + __properties: ClassVar[List[str]] = ["batteryLevel", "batteryLevelNormalizedPercent"] + + 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 BatteryMetrics 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 BatteryMetrics from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "batteryLevel": obj.get("batteryLevel"), + "batteryLevelNormalizedPercent": obj.get("batteryLevelNormalizedPercent") + }) + return _obj + + diff --git a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/cellular_profile.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/cellular_profile.py new file mode 100644 index 00000000..0cea8ad8 --- /dev/null +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/cellular_profile.py @@ -0,0 +1,105 @@ +# coding: utf-8 + +""" + Endpoint Test Results API + + Retrieve results for scheduled and dynamic tests on 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, StrictFloat, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing import Optional, Set +from typing_extensions import Self + +class CellularProfile(BaseModel): + """ + Cellular network profile information for a mobile endpoint agent. + """ # noqa: E501 + carrier_name: Optional[StrictStr] = Field(default=None, description="Carrier name", alias="carrierName") + network_gen: Optional[StrictStr] = Field(default=None, description="Cellular network generation.", alias="networkGen") + network_subtype: Optional[StrictStr] = Field(default=None, description="A real network subtype. It may be different from an advertised network type.", alias="networkSubtype") + advertised_network_gen: Optional[StrictStr] = Field(default=None, description="Cellular network generation.", alias="advertisedNetworkGen") + advertised_network_subtype: Optional[StrictStr] = Field(default=None, description="Advertised Network subtype", alias="advertisedNetworkSubtype") + rssi: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Received Signal Strength Indicator in dBm. Values are always negative.") + rsrp: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Reference Signal Received Power in dBm. Values are always negative.") + rscp: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Received Signal Code Power in dBm. Values are always negative or zero.") + rsrq: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Reference Signal Received Quality in dBm. Values are always negative.") + sinr: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Signal to Interference and Noise Ratio in dBm. It can be negative or positive.") + __properties: ClassVar[List[str]] = ["carrierName", "networkGen", "networkSubtype", "advertisedNetworkGen", "advertisedNetworkSubtype", "rssi", "rsrp", "rscp", "rsrq", "sinr"] + + 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 CellularProfile 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 CellularProfile from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "carrierName": obj.get("carrierName"), + "networkGen": obj.get("networkGen"), + "networkSubtype": obj.get("networkSubtype"), + "advertisedNetworkGen": obj.get("advertisedNetworkGen"), + "advertisedNetworkSubtype": obj.get("advertisedNetworkSubtype"), + "rssi": obj.get("rssi"), + "rsrp": obj.get("rsrp"), + "rscp": obj.get("rscp"), + "rsrq": obj.get("rsrq"), + "sinr": obj.get("sinr") + }) + return _obj + + diff --git a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/endpoint_test_result.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/endpoint_test_result.py index a88674fc..3038a32d 100644 --- a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/endpoint_test_result.py +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/endpoint_test_result.py @@ -18,7 +18,10 @@ import json from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional +from thousandeyes_sdk.endpoint_test_results.models.battery_metrics import BatteryMetrics +from thousandeyes_sdk.endpoint_test_results.models.cellular_profile import CellularProfile from thousandeyes_sdk.endpoint_test_results.models.network_profile import NetworkProfile +from thousandeyes_sdk.endpoint_test_results.models.platform import Platform from thousandeyes_sdk.endpoint_test_results.models.system_metrics import SystemMetrics from thousandeyes_sdk.endpoint_test_results.models.target_profile import TargetProfile from thousandeyes_sdk.endpoint_test_results.models.user_profile import UserProfile @@ -40,7 +43,10 @@ class EndpointTestResult(BaseModel): original_target_profile: Optional[TargetProfile] = Field(default=None, alias="originalTargetProfile") user_profile: Optional[UserProfile] = Field(default=None, alias="userProfile") vpn_profile: Optional[VpnProfile] = Field(default=None, alias="vpnProfile") - __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile"] + battery_metrics: Optional[BatteryMetrics] = Field(default=None, alias="batteryMetrics") + cellular_profile: Optional[CellularProfile] = Field(default=None, alias="cellularProfile") + platform: Optional[Platform] = None + __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "batteryMetrics", "cellularProfile", "platform"] model_config = ConfigDict( populate_by_name=True, @@ -105,6 +111,12 @@ class EndpointTestResult(BaseModel): # override the default output from pydantic by calling `to_dict()` of vpn_profile if self.vpn_profile: _dict['vpnProfile'] = self.vpn_profile.to_dict() + # override the default output from pydantic by calling `to_dict()` of battery_metrics + if self.battery_metrics: + _dict['batteryMetrics'] = self.battery_metrics.to_dict() + # override the default output from pydantic by calling `to_dict()` of cellular_profile + if self.cellular_profile: + _dict['cellularProfile'] = self.cellular_profile.to_dict() return _dict @classmethod @@ -126,7 +138,10 @@ class EndpointTestResult(BaseModel): "systemMetrics": SystemMetrics.from_dict(obj["systemMetrics"]) if obj.get("systemMetrics") is not None else None, "originalTargetProfile": TargetProfile.from_dict(obj["originalTargetProfile"]) if obj.get("originalTargetProfile") is not None else None, "userProfile": UserProfile.from_dict(obj["userProfile"]) if obj.get("userProfile") is not None else None, - "vpnProfile": VpnProfile.from_dict(obj["vpnProfile"]) if obj.get("vpnProfile") is not None else None + "vpnProfile": VpnProfile.from_dict(obj["vpnProfile"]) if obj.get("vpnProfile") is not None else None, + "batteryMetrics": BatteryMetrics.from_dict(obj["batteryMetrics"]) if obj.get("batteryMetrics") is not None else None, + "cellularProfile": CellularProfile.from_dict(obj["cellularProfile"]) if obj.get("cellularProfile") is not None else None, + "platform": obj.get("platform") }) return _obj diff --git a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/http_endpoint_test_result.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/http_endpoint_test_result.py index 36036922..ce7b92ef 100644 --- a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/http_endpoint_test_result.py +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/http_endpoint_test_result.py @@ -18,10 +18,13 @@ import json from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional +from thousandeyes_sdk.endpoint_test_results.models.battery_metrics import BatteryMetrics +from thousandeyes_sdk.endpoint_test_results.models.cellular_profile import CellularProfile from thousandeyes_sdk.endpoint_test_results.models.endpoint_http_data_point_score import EndpointHttpDataPointScore from thousandeyes_sdk.endpoint_test_results.models.http_endpoint_test_result_headers import HttpEndpointTestResultHeaders from thousandeyes_sdk.endpoint_test_results.models.http_error_type import HttpErrorType from thousandeyes_sdk.endpoint_test_results.models.network_profile import NetworkProfile +from thousandeyes_sdk.endpoint_test_results.models.platform import Platform from thousandeyes_sdk.endpoint_test_results.models.system_metrics import SystemMetrics from thousandeyes_sdk.endpoint_test_results.models.target_profile import TargetProfile from thousandeyes_sdk.endpoint_test_results.models.user_profile import UserProfile @@ -43,6 +46,9 @@ class HttpEndpointTestResult(BaseModel): original_target_profile: Optional[TargetProfile] = Field(default=None, alias="originalTargetProfile") user_profile: Optional[UserProfile] = Field(default=None, alias="userProfile") vpn_profile: Optional[VpnProfile] = Field(default=None, alias="vpnProfile") + battery_metrics: Optional[BatteryMetrics] = Field(default=None, alias="batteryMetrics") + cellular_profile: Optional[CellularProfile] = Field(default=None, alias="cellularProfile") + platform: Optional[Platform] = None score: Optional[EndpointHttpDataPointScore] = None connect_time: Optional[StrictInt] = Field(default=None, description="Time required to establish a TCP connection to the server in milliseconds.", alias="connectTime") dns_time: Optional[StrictInt] = Field(default=None, description="Time required to resolve DNS in milliseconds.", alias="dnsTime") @@ -59,7 +65,7 @@ class HttpEndpointTestResult(BaseModel): wait_time: Optional[StrictInt] = Field(default=None, description="Time elapsed between completion of request and first byte of response in milliseconds.", alias="waitTime") wire_size: Optional[StrictInt] = Field(default=None, description="Size of content in bytes.", alias="wireSize") throughput: Optional[StrictInt] = Field(default=None, description="Amount of data transmitted, in bytes.") - __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "score", "connectTime", "dnsTime", "errorType", "errorDetails", "headers", "numRedirects", "receiveTime", "redirectTime", "responseCode", "responseTime", "sslTime", "totalTime", "waitTime", "wireSize", "throughput"] + __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "batteryMetrics", "cellularProfile", "platform", "score", "connectTime", "dnsTime", "errorType", "errorDetails", "headers", "numRedirects", "receiveTime", "redirectTime", "responseCode", "responseTime", "sslTime", "totalTime", "waitTime", "wireSize", "throughput"] model_config = ConfigDict( populate_by_name=True, @@ -150,6 +156,12 @@ class HttpEndpointTestResult(BaseModel): # override the default output from pydantic by calling `to_dict()` of vpn_profile if self.vpn_profile: _dict['vpnProfile'] = self.vpn_profile.to_dict() + # override the default output from pydantic by calling `to_dict()` of battery_metrics + if self.battery_metrics: + _dict['batteryMetrics'] = self.battery_metrics.to_dict() + # override the default output from pydantic by calling `to_dict()` of cellular_profile + if self.cellular_profile: + _dict['cellularProfile'] = self.cellular_profile.to_dict() # override the default output from pydantic by calling `to_dict()` of score if self.score: _dict['score'] = self.score.to_dict() @@ -178,6 +190,9 @@ class HttpEndpointTestResult(BaseModel): "originalTargetProfile": TargetProfile.from_dict(obj["originalTargetProfile"]) if obj.get("originalTargetProfile") is not None else None, "userProfile": UserProfile.from_dict(obj["userProfile"]) if obj.get("userProfile") is not None else None, "vpnProfile": VpnProfile.from_dict(obj["vpnProfile"]) if obj.get("vpnProfile") is not None else None, + "batteryMetrics": BatteryMetrics.from_dict(obj["batteryMetrics"]) if obj.get("batteryMetrics") is not None else None, + "cellularProfile": CellularProfile.from_dict(obj["cellularProfile"]) if obj.get("cellularProfile") is not None else None, + "platform": obj.get("platform"), "score": EndpointHttpDataPointScore.from_dict(obj["score"]) if obj.get("score") is not None else None, "connectTime": obj.get("connectTime"), "dnsTime": obj.get("dnsTime"), diff --git a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/local_network_topology_result.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/local_network_topology_result.py index 721a4322..c376c957 100644 --- a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/local_network_topology_result.py +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/local_network_topology_result.py @@ -19,6 +19,8 @@ import json from datetime import datetime from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional +from thousandeyes_sdk.endpoint_test_results.models.battery_metrics import BatteryMetrics +from thousandeyes_sdk.endpoint_test_results.models.cellular_profile import CellularProfile from thousandeyes_sdk.endpoint_test_results.models.endpoint_probe_agent_score import EndpointProbeAgentScore from thousandeyes_sdk.endpoint_test_results.models.endpoint_probe_connection_score import EndpointProbeConnectionScore from thousandeyes_sdk.endpoint_test_results.models.endpoint_probe_gateway_score import EndpointProbeGatewayScore @@ -27,6 +29,7 @@ from thousandeyes_sdk.endpoint_test_results.models.endpoint_probe_vpn_score impo from thousandeyes_sdk.endpoint_test_results.models.network_ping import NetworkPing from thousandeyes_sdk.endpoint_test_results.models.network_profile import NetworkProfile from thousandeyes_sdk.endpoint_test_results.models.network_topology_type import NetworkTopologyType +from thousandeyes_sdk.endpoint_test_results.models.platform import Platform from thousandeyes_sdk.endpoint_test_results.models.real_user_endpoint_test_coordinates import RealUserEndpointTestCoordinates from thousandeyes_sdk.endpoint_test_results.models.system_metric_details import SystemMetricDetails from thousandeyes_sdk.endpoint_test_results.models.system_metrics import SystemMetrics @@ -56,11 +59,14 @@ class LocalNetworkTopologyResult(BaseModel): proxy_score: Optional[EndpointProbeProxyScore] = Field(default=None, alias="proxyScore") connection_score: Optional[EndpointProbeConnectionScore] = Field(default=None, alias="connectionScore") agent_score: Optional[EndpointProbeAgentScore] = Field(default=None, alias="agentScore") + battery_metrics: Optional[BatteryMetrics] = Field(default=None, alias="batteryMetrics") + cellular_profile: Optional[CellularProfile] = Field(default=None, alias="cellularProfile") + platform: Optional[Platform] = None coordinates: Optional[RealUserEndpointTestCoordinates] = None network_profile: Optional[NetworkProfile] = Field(default=None, alias="networkProfile") icmp_traceroute: Optional[Traceroute] = Field(default=None, alias="icmpTraceroute") icmp_traceroutes: Optional[List[Traceroute]] = Field(default=None, alias="icmpTraceroutes") - __properties: ClassVar[List[str]] = ["agentId", "date", "networkTopologyId", "roundId", "target", "targetPort", "type", "icmpPing", "isIcmpBlocked", "tcpConnect", "systemMetrics", "systemMetricDetails", "vpnScore", "gatewayScore", "proxyScore", "connectionScore", "agentScore", "coordinates", "networkProfile", "icmpTraceroute", "icmpTraceroutes"] + __properties: ClassVar[List[str]] = ["agentId", "date", "networkTopologyId", "roundId", "target", "targetPort", "type", "icmpPing", "isIcmpBlocked", "tcpConnect", "systemMetrics", "systemMetricDetails", "vpnScore", "gatewayScore", "proxyScore", "connectionScore", "agentScore", "batteryMetrics", "cellularProfile", "platform", "coordinates", "networkProfile", "icmpTraceroute", "icmpTraceroutes"] model_config = ConfigDict( populate_by_name=True, @@ -143,6 +149,12 @@ class LocalNetworkTopologyResult(BaseModel): # override the default output from pydantic by calling `to_dict()` of agent_score if self.agent_score: _dict['agentScore'] = self.agent_score.to_dict() + # override the default output from pydantic by calling `to_dict()` of battery_metrics + if self.battery_metrics: + _dict['batteryMetrics'] = self.battery_metrics.to_dict() + # override the default output from pydantic by calling `to_dict()` of cellular_profile + if self.cellular_profile: + _dict['cellularProfile'] = self.cellular_profile.to_dict() # override the default output from pydantic by calling `to_dict()` of coordinates if self.coordinates: _dict['coordinates'] = self.coordinates.to_dict() @@ -188,6 +200,9 @@ class LocalNetworkTopologyResult(BaseModel): "proxyScore": EndpointProbeProxyScore.from_dict(obj["proxyScore"]) if obj.get("proxyScore") is not None else None, "connectionScore": EndpointProbeConnectionScore.from_dict(obj["connectionScore"]) if obj.get("connectionScore") is not None else None, "agentScore": EndpointProbeAgentScore.from_dict(obj["agentScore"]) if obj.get("agentScore") is not None else None, + "batteryMetrics": BatteryMetrics.from_dict(obj["batteryMetrics"]) if obj.get("batteryMetrics") is not None else None, + "cellularProfile": CellularProfile.from_dict(obj["cellularProfile"]) if obj.get("cellularProfile") is not None else None, + "platform": obj.get("platform"), "coordinates": RealUserEndpointTestCoordinates.from_dict(obj["coordinates"]) if obj.get("coordinates") is not None else None, "networkProfile": NetworkProfile.from_dict(obj["networkProfile"]) if obj.get("networkProfile") is not None else None, "icmpTraceroute": Traceroute.from_dict(obj["icmpTraceroute"]) if obj.get("icmpTraceroute") is not None else None, diff --git a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/local_network_topology_result_base.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/local_network_topology_result_base.py index 00c4e818..4718c1ac 100644 --- a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/local_network_topology_result_base.py +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/local_network_topology_result_base.py @@ -19,6 +19,8 @@ import json from datetime import datetime from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional +from thousandeyes_sdk.endpoint_test_results.models.battery_metrics import BatteryMetrics +from thousandeyes_sdk.endpoint_test_results.models.cellular_profile import CellularProfile from thousandeyes_sdk.endpoint_test_results.models.endpoint_probe_agent_score import EndpointProbeAgentScore from thousandeyes_sdk.endpoint_test_results.models.endpoint_probe_connection_score import EndpointProbeConnectionScore from thousandeyes_sdk.endpoint_test_results.models.endpoint_probe_gateway_score import EndpointProbeGatewayScore @@ -26,6 +28,7 @@ from thousandeyes_sdk.endpoint_test_results.models.endpoint_probe_proxy_score im from thousandeyes_sdk.endpoint_test_results.models.endpoint_probe_vpn_score import EndpointProbeVpnScore from thousandeyes_sdk.endpoint_test_results.models.network_ping import NetworkPing from thousandeyes_sdk.endpoint_test_results.models.network_topology_type import NetworkTopologyType +from thousandeyes_sdk.endpoint_test_results.models.platform import Platform from thousandeyes_sdk.endpoint_test_results.models.system_metric_details import SystemMetricDetails from thousandeyes_sdk.endpoint_test_results.models.system_metrics import SystemMetrics from thousandeyes_sdk.endpoint_test_results.models.tcp_connect import TcpConnect @@ -53,7 +56,10 @@ class LocalNetworkTopologyResultBase(BaseModel): proxy_score: Optional[EndpointProbeProxyScore] = Field(default=None, alias="proxyScore") connection_score: Optional[EndpointProbeConnectionScore] = Field(default=None, alias="connectionScore") agent_score: Optional[EndpointProbeAgentScore] = Field(default=None, alias="agentScore") - __properties: ClassVar[List[str]] = ["agentId", "date", "networkTopologyId", "roundId", "target", "targetPort", "type", "icmpPing", "isIcmpBlocked", "tcpConnect", "systemMetrics", "systemMetricDetails", "vpnScore", "gatewayScore", "proxyScore", "connectionScore", "agentScore"] + battery_metrics: Optional[BatteryMetrics] = Field(default=None, alias="batteryMetrics") + cellular_profile: Optional[CellularProfile] = Field(default=None, alias="cellularProfile") + platform: Optional[Platform] = None + __properties: ClassVar[List[str]] = ["agentId", "date", "networkTopologyId", "roundId", "target", "targetPort", "type", "icmpPing", "isIcmpBlocked", "tcpConnect", "systemMetrics", "systemMetricDetails", "vpnScore", "gatewayScore", "proxyScore", "connectionScore", "agentScore", "batteryMetrics", "cellularProfile", "platform"] model_config = ConfigDict( populate_by_name=True, @@ -136,6 +142,12 @@ class LocalNetworkTopologyResultBase(BaseModel): # override the default output from pydantic by calling `to_dict()` of agent_score if self.agent_score: _dict['agentScore'] = self.agent_score.to_dict() + # override the default output from pydantic by calling `to_dict()` of battery_metrics + if self.battery_metrics: + _dict['batteryMetrics'] = self.battery_metrics.to_dict() + # override the default output from pydantic by calling `to_dict()` of cellular_profile + if self.cellular_profile: + _dict['cellularProfile'] = self.cellular_profile.to_dict() return _dict @classmethod @@ -164,7 +176,10 @@ class LocalNetworkTopologyResultBase(BaseModel): "gatewayScore": EndpointProbeGatewayScore.from_dict(obj["gatewayScore"]) if obj.get("gatewayScore") is not None else None, "proxyScore": EndpointProbeProxyScore.from_dict(obj["proxyScore"]) if obj.get("proxyScore") is not None else None, "connectionScore": EndpointProbeConnectionScore.from_dict(obj["connectionScore"]) if obj.get("connectionScore") is not None else None, - "agentScore": EndpointProbeAgentScore.from_dict(obj["agentScore"]) if obj.get("agentScore") is not None else None + "agentScore": EndpointProbeAgentScore.from_dict(obj["agentScore"]) if obj.get("agentScore") is not None else None, + "batteryMetrics": BatteryMetrics.from_dict(obj["batteryMetrics"]) if obj.get("batteryMetrics") is not None else None, + "cellularProfile": CellularProfile.from_dict(obj["cellularProfile"]) if obj.get("cellularProfile") is not None else None, + "platform": obj.get("platform") }) return _obj diff --git a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/network_dynamic_endpoint_test_result.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/network_dynamic_endpoint_test_result.py index 97de1571..1ed33164 100644 --- a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/network_dynamic_endpoint_test_result.py +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/network_dynamic_endpoint_test_result.py @@ -18,11 +18,14 @@ import json from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional, Union +from thousandeyes_sdk.endpoint_test_results.models.battery_metrics import BatteryMetrics +from thousandeyes_sdk.endpoint_test_results.models.cellular_profile import CellularProfile from thousandeyes_sdk.endpoint_test_results.models.dynamic_endpoint_test_webex import DynamicEndpointTestWebex from thousandeyes_sdk.endpoint_test_results.models.endpoint_ping_data_point_score import EndpointPingDataPointScore from thousandeyes_sdk.endpoint_test_results.models.endpoint_test_result_protocol import EndpointTestResultProtocol from thousandeyes_sdk.endpoint_test_results.models.endpoint_zta_metrics import EndpointZtaMetrics from thousandeyes_sdk.endpoint_test_results.models.network_profile import NetworkProfile +from thousandeyes_sdk.endpoint_test_results.models.platform import Platform from thousandeyes_sdk.endpoint_test_results.models.system_metrics import SystemMetrics from thousandeyes_sdk.endpoint_test_results.models.target_profile import TargetProfile from thousandeyes_sdk.endpoint_test_results.models.test_probe_mode_response import TestProbeModeResponse @@ -46,6 +49,9 @@ class NetworkDynamicEndpointTestResult(BaseModel): original_target_profile: Optional[TargetProfile] = Field(default=None, alias="originalTargetProfile") user_profile: Optional[UserProfile] = Field(default=None, alias="userProfile") vpn_profile: Optional[VpnProfile] = Field(default=None, alias="vpnProfile") + battery_metrics: Optional[BatteryMetrics] = Field(default=None, alias="batteryMetrics") + cellular_profile: Optional[CellularProfile] = Field(default=None, alias="cellularProfile") + platform: Optional[Platform] = None avg_latency: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Average RTT for packets sent to destination.", alias="avgLatency") error_details: Optional[StrictStr] = Field(default=None, description="Error details, if an error was encountered.", alias="errorDetails") jitter: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Standard deviation of latency.") @@ -60,7 +66,7 @@ class NetworkDynamicEndpointTestResult(BaseModel): tcp_probe_mode: Optional[TestProbeModeResponse] = Field(default=None, alias="tcpProbeMode") udp_probe_mode: Optional[UdpProbeModeResponse] = Field(default=None, alias="udpProbeMode") webex: Optional[DynamicEndpointTestWebex] = None - __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "avgLatency", "errorDetails", "jitter", "score", "ztaMetrics", "isIcmpBlocked", "loss", "maxLatency", "minLatency", "application", "protocol", "tcpProbeMode", "udpProbeMode", "webex"] + __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "batteryMetrics", "cellularProfile", "platform", "avgLatency", "errorDetails", "jitter", "score", "ztaMetrics", "isIcmpBlocked", "loss", "maxLatency", "minLatency", "application", "protocol", "tcpProbeMode", "udpProbeMode", "webex"] model_config = ConfigDict( populate_by_name=True, @@ -139,6 +145,12 @@ class NetworkDynamicEndpointTestResult(BaseModel): # override the default output from pydantic by calling `to_dict()` of vpn_profile if self.vpn_profile: _dict['vpnProfile'] = self.vpn_profile.to_dict() + # override the default output from pydantic by calling `to_dict()` of battery_metrics + if self.battery_metrics: + _dict['batteryMetrics'] = self.battery_metrics.to_dict() + # override the default output from pydantic by calling `to_dict()` of cellular_profile + if self.cellular_profile: + _dict['cellularProfile'] = self.cellular_profile.to_dict() # override the default output from pydantic by calling `to_dict()` of score if self.score: _dict['score'] = self.score.to_dict() @@ -174,6 +186,9 @@ class NetworkDynamicEndpointTestResult(BaseModel): "originalTargetProfile": TargetProfile.from_dict(obj["originalTargetProfile"]) if obj.get("originalTargetProfile") is not None else None, "userProfile": UserProfile.from_dict(obj["userProfile"]) if obj.get("userProfile") is not None else None, "vpnProfile": VpnProfile.from_dict(obj["vpnProfile"]) if obj.get("vpnProfile") is not None else None, + "batteryMetrics": BatteryMetrics.from_dict(obj["batteryMetrics"]) if obj.get("batteryMetrics") is not None else None, + "cellularProfile": CellularProfile.from_dict(obj["cellularProfile"]) if obj.get("cellularProfile") is not None else None, + "platform": obj.get("platform"), "avgLatency": obj.get("avgLatency"), "errorDetails": obj.get("errorDetails"), "jitter": obj.get("jitter"), diff --git a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/network_endpoint_test_result.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/network_endpoint_test_result.py index df40bca1..f8f44ed3 100644 --- a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/network_endpoint_test_result.py +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/network_endpoint_test_result.py @@ -18,9 +18,12 @@ import json from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional, Union +from thousandeyes_sdk.endpoint_test_results.models.battery_metrics import BatteryMetrics +from thousandeyes_sdk.endpoint_test_results.models.cellular_profile import CellularProfile from thousandeyes_sdk.endpoint_test_results.models.endpoint_ping_data_point_score import EndpointPingDataPointScore from thousandeyes_sdk.endpoint_test_results.models.endpoint_zta_metrics import EndpointZtaMetrics from thousandeyes_sdk.endpoint_test_results.models.network_profile import NetworkProfile +from thousandeyes_sdk.endpoint_test_results.models.platform import Platform from thousandeyes_sdk.endpoint_test_results.models.system_metrics import SystemMetrics from thousandeyes_sdk.endpoint_test_results.models.target_profile import TargetProfile from thousandeyes_sdk.endpoint_test_results.models.user_profile import UserProfile @@ -42,6 +45,9 @@ class NetworkEndpointTestResult(BaseModel): original_target_profile: Optional[TargetProfile] = Field(default=None, alias="originalTargetProfile") user_profile: Optional[UserProfile] = Field(default=None, alias="userProfile") vpn_profile: Optional[VpnProfile] = Field(default=None, alias="vpnProfile") + battery_metrics: Optional[BatteryMetrics] = Field(default=None, alias="batteryMetrics") + cellular_profile: Optional[CellularProfile] = Field(default=None, alias="cellularProfile") + platform: Optional[Platform] = None avg_latency: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Average RTT for packets sent to destination.", alias="avgLatency") error_details: Optional[StrictStr] = Field(default=None, description="Error details, if an error was encountered.", alias="errorDetails") jitter: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Standard deviation of latency.") @@ -51,7 +57,7 @@ class NetworkEndpointTestResult(BaseModel): loss: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Percentage of packets not reaching destination.") max_latency: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Maximum RTT for packets sent to destination.", alias="maxLatency") min_latency: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Minimum RTT for packets sent to destination.", alias="minLatency") - __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "avgLatency", "errorDetails", "jitter", "score", "ztaMetrics", "isIcmpBlocked", "loss", "maxLatency", "minLatency"] + __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "batteryMetrics", "cellularProfile", "platform", "avgLatency", "errorDetails", "jitter", "score", "ztaMetrics", "isIcmpBlocked", "loss", "maxLatency", "minLatency"] model_config = ConfigDict( populate_by_name=True, @@ -130,6 +136,12 @@ class NetworkEndpointTestResult(BaseModel): # override the default output from pydantic by calling `to_dict()` of vpn_profile if self.vpn_profile: _dict['vpnProfile'] = self.vpn_profile.to_dict() + # override the default output from pydantic by calling `to_dict()` of battery_metrics + if self.battery_metrics: + _dict['batteryMetrics'] = self.battery_metrics.to_dict() + # override the default output from pydantic by calling `to_dict()` of cellular_profile + if self.cellular_profile: + _dict['cellularProfile'] = self.cellular_profile.to_dict() # override the default output from pydantic by calling `to_dict()` of score if self.score: _dict['score'] = self.score.to_dict() @@ -162,6 +174,9 @@ class NetworkEndpointTestResult(BaseModel): "originalTargetProfile": TargetProfile.from_dict(obj["originalTargetProfile"]) if obj.get("originalTargetProfile") is not None else None, "userProfile": UserProfile.from_dict(obj["userProfile"]) if obj.get("userProfile") is not None else None, "vpnProfile": VpnProfile.from_dict(obj["vpnProfile"]) if obj.get("vpnProfile") is not None else None, + "batteryMetrics": BatteryMetrics.from_dict(obj["batteryMetrics"]) if obj.get("batteryMetrics") is not None else None, + "cellularProfile": CellularProfile.from_dict(obj["cellularProfile"]) if obj.get("cellularProfile") is not None else None, + "platform": obj.get("platform"), "avgLatency": obj.get("avgLatency"), "errorDetails": obj.get("errorDetails"), "jitter": obj.get("jitter"), diff --git a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_base_endpoint_test_result.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_base_endpoint_test_result.py index 0ca55f8d..fd4a629c 100644 --- a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_base_endpoint_test_result.py +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_base_endpoint_test_result.py @@ -19,7 +19,10 @@ import json from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from thousandeyes_sdk.endpoint_test_results.models.asn_details import AsnDetails +from thousandeyes_sdk.endpoint_test_results.models.battery_metrics import BatteryMetrics +from thousandeyes_sdk.endpoint_test_results.models.cellular_profile import CellularProfile from thousandeyes_sdk.endpoint_test_results.models.network_profile import NetworkProfile +from thousandeyes_sdk.endpoint_test_results.models.platform import Platform from thousandeyes_sdk.endpoint_test_results.models.system_metrics import SystemMetrics from thousandeyes_sdk.endpoint_test_results.models.target_profile import TargetProfile from thousandeyes_sdk.endpoint_test_results.models.user_profile import UserProfile @@ -41,11 +44,14 @@ class PathVisBaseEndpointTestResult(BaseModel): original_target_profile: Optional[TargetProfile] = Field(default=None, alias="originalTargetProfile") user_profile: Optional[UserProfile] = Field(default=None, alias="userProfile") vpn_profile: Optional[VpnProfile] = Field(default=None, alias="vpnProfile") + battery_metrics: Optional[BatteryMetrics] = Field(default=None, alias="batteryMetrics") + cellular_profile: Optional[CellularProfile] = Field(default=None, alias="cellularProfile") + platform: Optional[Platform] = None asn_details: Optional[AsnDetails] = Field(default=None, alias="asnDetails") server: Optional[StrictStr] = Field(default=None, description="Target server, including port.") source_ip: Optional[StrictStr] = Field(default=None, description="IP address of source endpoint agent.", alias="sourceIp") source_prefix: Optional[StrictStr] = Field(default=None, description="IP prefix of source endpoint agent.", alias="sourcePrefix") - __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "asnDetails", "server", "sourceIp", "sourcePrefix"] + __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "batteryMetrics", "cellularProfile", "platform", "asnDetails", "server", "sourceIp", "sourcePrefix"] model_config = ConfigDict( populate_by_name=True, @@ -116,6 +122,12 @@ class PathVisBaseEndpointTestResult(BaseModel): # override the default output from pydantic by calling `to_dict()` of vpn_profile if self.vpn_profile: _dict['vpnProfile'] = self.vpn_profile.to_dict() + # override the default output from pydantic by calling `to_dict()` of battery_metrics + if self.battery_metrics: + _dict['batteryMetrics'] = self.battery_metrics.to_dict() + # override the default output from pydantic by calling `to_dict()` of cellular_profile + if self.cellular_profile: + _dict['cellularProfile'] = self.cellular_profile.to_dict() # override the default output from pydantic by calling `to_dict()` of asn_details if self.asn_details: _dict['asnDetails'] = self.asn_details.to_dict() @@ -141,6 +153,9 @@ class PathVisBaseEndpointTestResult(BaseModel): "originalTargetProfile": TargetProfile.from_dict(obj["originalTargetProfile"]) if obj.get("originalTargetProfile") is not None else None, "userProfile": UserProfile.from_dict(obj["userProfile"]) if obj.get("userProfile") is not None else None, "vpnProfile": VpnProfile.from_dict(obj["vpnProfile"]) if obj.get("vpnProfile") is not None else None, + "batteryMetrics": BatteryMetrics.from_dict(obj["batteryMetrics"]) if obj.get("batteryMetrics") is not None else None, + "cellularProfile": CellularProfile.from_dict(obj["cellularProfile"]) if obj.get("cellularProfile") is not None else None, + "platform": obj.get("platform"), "asnDetails": AsnDetails.from_dict(obj["asnDetails"]) if obj.get("asnDetails") is not None else None, "server": obj.get("server"), "sourceIp": obj.get("sourceIp"), diff --git a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_detail_dynamic_endpoint_test_result.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_detail_dynamic_endpoint_test_result.py index 69dbfef8..8b32f781 100644 --- a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_detail_dynamic_endpoint_test_result.py +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_detail_dynamic_endpoint_test_result.py @@ -19,10 +19,13 @@ import json from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from thousandeyes_sdk.endpoint_test_results.models.asn_details import AsnDetails +from thousandeyes_sdk.endpoint_test_results.models.battery_metrics import BatteryMetrics +from thousandeyes_sdk.endpoint_test_results.models.cellular_profile import CellularProfile from thousandeyes_sdk.endpoint_test_results.models.dynamic_endpoint_test_webex import DynamicEndpointTestWebex from thousandeyes_sdk.endpoint_test_results.models.endpoint_path_vis_route import EndpointPathVisRoute from thousandeyes_sdk.endpoint_test_results.models.endpoint_test_result_protocol import EndpointTestResultProtocol from thousandeyes_sdk.endpoint_test_results.models.network_profile import NetworkProfile +from thousandeyes_sdk.endpoint_test_results.models.platform import Platform from thousandeyes_sdk.endpoint_test_results.models.system_metrics import SystemMetrics from thousandeyes_sdk.endpoint_test_results.models.target_profile import TargetProfile from thousandeyes_sdk.endpoint_test_results.models.test_probe_mode_response import TestProbeModeResponse @@ -46,6 +49,9 @@ class PathVisDetailDynamicEndpointTestResult(BaseModel): original_target_profile: Optional[TargetProfile] = Field(default=None, alias="originalTargetProfile") user_profile: Optional[UserProfile] = Field(default=None, alias="userProfile") vpn_profile: Optional[VpnProfile] = Field(default=None, alias="vpnProfile") + battery_metrics: Optional[BatteryMetrics] = Field(default=None, alias="batteryMetrics") + cellular_profile: Optional[CellularProfile] = Field(default=None, alias="cellularProfile") + platform: Optional[Platform] = None asn_details: Optional[AsnDetails] = Field(default=None, alias="asnDetails") server: Optional[StrictStr] = Field(default=None, description="Target server, including port.") source_ip: Optional[StrictStr] = Field(default=None, description="IP address of source endpoint agent.", alias="sourceIp") @@ -57,7 +63,7 @@ class PathVisDetailDynamicEndpointTestResult(BaseModel): tcp_probe_mode: Optional[TestProbeModeResponse] = Field(default=None, alias="tcpProbeMode") udp_probe_mode: Optional[UdpProbeModeResponse] = Field(default=None, alias="udpProbeMode") webex: Optional[DynamicEndpointTestWebex] = None - __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "asnDetails", "server", "sourceIp", "sourcePrefix", "pathTraces", "vpnPathTraces", "application", "protocol", "tcpProbeMode", "udpProbeMode", "webex"] + __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "batteryMetrics", "cellularProfile", "platform", "asnDetails", "server", "sourceIp", "sourcePrefix", "pathTraces", "vpnPathTraces", "application", "protocol", "tcpProbeMode", "udpProbeMode", "webex"] model_config = ConfigDict( populate_by_name=True, @@ -128,6 +134,12 @@ class PathVisDetailDynamicEndpointTestResult(BaseModel): # override the default output from pydantic by calling `to_dict()` of vpn_profile if self.vpn_profile: _dict['vpnProfile'] = self.vpn_profile.to_dict() + # override the default output from pydantic by calling `to_dict()` of battery_metrics + if self.battery_metrics: + _dict['batteryMetrics'] = self.battery_metrics.to_dict() + # override the default output from pydantic by calling `to_dict()` of cellular_profile + if self.cellular_profile: + _dict['cellularProfile'] = self.cellular_profile.to_dict() # override the default output from pydantic by calling `to_dict()` of asn_details if self.asn_details: _dict['asnDetails'] = self.asn_details.to_dict() @@ -170,6 +182,9 @@ class PathVisDetailDynamicEndpointTestResult(BaseModel): "originalTargetProfile": TargetProfile.from_dict(obj["originalTargetProfile"]) if obj.get("originalTargetProfile") is not None else None, "userProfile": UserProfile.from_dict(obj["userProfile"]) if obj.get("userProfile") is not None else None, "vpnProfile": VpnProfile.from_dict(obj["vpnProfile"]) if obj.get("vpnProfile") is not None else None, + "batteryMetrics": BatteryMetrics.from_dict(obj["batteryMetrics"]) if obj.get("batteryMetrics") is not None else None, + "cellularProfile": CellularProfile.from_dict(obj["cellularProfile"]) if obj.get("cellularProfile") is not None else None, + "platform": obj.get("platform"), "asnDetails": AsnDetails.from_dict(obj["asnDetails"]) if obj.get("asnDetails") is not None else None, "server": obj.get("server"), "sourceIp": obj.get("sourceIp"), diff --git a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_detail_endpoint_test_result.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_detail_endpoint_test_result.py index d39ae282..f9a6a8e1 100644 --- a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_detail_endpoint_test_result.py +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_detail_endpoint_test_result.py @@ -19,8 +19,11 @@ import json from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from thousandeyes_sdk.endpoint_test_results.models.asn_details import AsnDetails +from thousandeyes_sdk.endpoint_test_results.models.battery_metrics import BatteryMetrics +from thousandeyes_sdk.endpoint_test_results.models.cellular_profile import CellularProfile from thousandeyes_sdk.endpoint_test_results.models.endpoint_path_vis_route import EndpointPathVisRoute from thousandeyes_sdk.endpoint_test_results.models.network_profile import NetworkProfile +from thousandeyes_sdk.endpoint_test_results.models.platform import Platform from thousandeyes_sdk.endpoint_test_results.models.system_metrics import SystemMetrics from thousandeyes_sdk.endpoint_test_results.models.target_profile import TargetProfile from thousandeyes_sdk.endpoint_test_results.models.user_profile import UserProfile @@ -42,13 +45,16 @@ class PathVisDetailEndpointTestResult(BaseModel): original_target_profile: Optional[TargetProfile] = Field(default=None, alias="originalTargetProfile") user_profile: Optional[UserProfile] = Field(default=None, alias="userProfile") vpn_profile: Optional[VpnProfile] = Field(default=None, alias="vpnProfile") + battery_metrics: Optional[BatteryMetrics] = Field(default=None, alias="batteryMetrics") + cellular_profile: Optional[CellularProfile] = Field(default=None, alias="cellularProfile") + platform: Optional[Platform] = None asn_details: Optional[AsnDetails] = Field(default=None, alias="asnDetails") server: Optional[StrictStr] = Field(default=None, description="Target server, including port.") source_ip: Optional[StrictStr] = Field(default=None, description="IP address of source endpoint agent.", alias="sourceIp") source_prefix: Optional[StrictStr] = Field(default=None, description="IP prefix of source endpoint agent.", alias="sourcePrefix") path_traces: Optional[List[EndpointPathVisRoute]] = Field(default=None, description="Shows iterations of path trace, with each iteration specified by a pathId.", alias="pathTraces") vpn_path_traces: Optional[List[EndpointPathVisRoute]] = Field(default=None, description="Shows iterations of the VPN path trace, with each iteration specified by a pathId.", alias="vpnPathTraces") - __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "asnDetails", "server", "sourceIp", "sourcePrefix", "pathTraces", "vpnPathTraces"] + __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "batteryMetrics", "cellularProfile", "platform", "asnDetails", "server", "sourceIp", "sourcePrefix", "pathTraces", "vpnPathTraces"] model_config = ConfigDict( populate_by_name=True, @@ -119,6 +125,12 @@ class PathVisDetailEndpointTestResult(BaseModel): # override the default output from pydantic by calling `to_dict()` of vpn_profile if self.vpn_profile: _dict['vpnProfile'] = self.vpn_profile.to_dict() + # override the default output from pydantic by calling `to_dict()` of battery_metrics + if self.battery_metrics: + _dict['batteryMetrics'] = self.battery_metrics.to_dict() + # override the default output from pydantic by calling `to_dict()` of cellular_profile + if self.cellular_profile: + _dict['cellularProfile'] = self.cellular_profile.to_dict() # override the default output from pydantic by calling `to_dict()` of asn_details if self.asn_details: _dict['asnDetails'] = self.asn_details.to_dict() @@ -158,6 +170,9 @@ class PathVisDetailEndpointTestResult(BaseModel): "originalTargetProfile": TargetProfile.from_dict(obj["originalTargetProfile"]) if obj.get("originalTargetProfile") is not None else None, "userProfile": UserProfile.from_dict(obj["userProfile"]) if obj.get("userProfile") is not None else None, "vpnProfile": VpnProfile.from_dict(obj["vpnProfile"]) if obj.get("vpnProfile") is not None else None, + "batteryMetrics": BatteryMetrics.from_dict(obj["batteryMetrics"]) if obj.get("batteryMetrics") is not None else None, + "cellularProfile": CellularProfile.from_dict(obj["cellularProfile"]) if obj.get("cellularProfile") is not None else None, + "platform": obj.get("platform"), "asnDetails": AsnDetails.from_dict(obj["asnDetails"]) if obj.get("asnDetails") is not None else None, "server": obj.get("server"), "sourceIp": obj.get("sourceIp"), diff --git a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_dynamic_endpoint_test_result.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_dynamic_endpoint_test_result.py index 22b5f7db..6507c9b8 100644 --- a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_dynamic_endpoint_test_result.py +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_dynamic_endpoint_test_result.py @@ -19,10 +19,13 @@ import json from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from thousandeyes_sdk.endpoint_test_results.models.asn_details import AsnDetails +from thousandeyes_sdk.endpoint_test_results.models.battery_metrics import BatteryMetrics +from thousandeyes_sdk.endpoint_test_results.models.cellular_profile import CellularProfile from thousandeyes_sdk.endpoint_test_results.models.dynamic_endpoint_test_webex import DynamicEndpointTestWebex from thousandeyes_sdk.endpoint_test_results.models.endpoint_path_trace import EndpointPathTrace from thousandeyes_sdk.endpoint_test_results.models.endpoint_test_result_protocol import EndpointTestResultProtocol from thousandeyes_sdk.endpoint_test_results.models.network_profile import NetworkProfile +from thousandeyes_sdk.endpoint_test_results.models.platform import Platform from thousandeyes_sdk.endpoint_test_results.models.system_metrics import SystemMetrics from thousandeyes_sdk.endpoint_test_results.models.target_profile import TargetProfile from thousandeyes_sdk.endpoint_test_results.models.test_probe_mode_response import TestProbeModeResponse @@ -46,6 +49,9 @@ class PathVisDynamicEndpointTestResult(BaseModel): original_target_profile: Optional[TargetProfile] = Field(default=None, alias="originalTargetProfile") user_profile: Optional[UserProfile] = Field(default=None, alias="userProfile") vpn_profile: Optional[VpnProfile] = Field(default=None, alias="vpnProfile") + battery_metrics: Optional[BatteryMetrics] = Field(default=None, alias="batteryMetrics") + cellular_profile: Optional[CellularProfile] = Field(default=None, alias="cellularProfile") + platform: Optional[Platform] = None asn_details: Optional[AsnDetails] = Field(default=None, alias="asnDetails") server: Optional[StrictStr] = Field(default=None, description="Target server, including port.") source_ip: Optional[StrictStr] = Field(default=None, description="IP address of source endpoint agent.", alias="sourceIp") @@ -57,7 +63,7 @@ class PathVisDynamicEndpointTestResult(BaseModel): webex: Optional[DynamicEndpointTestWebex] = None location: Optional[StrictStr] = Field(default=None, description="Geographic location of the path visualization.") path_traces: Optional[List[EndpointPathTrace]] = Field(default=None, description="Shows an iteration of path trace, with each iteration specified by a pathId.", alias="pathTraces") - __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "asnDetails", "server", "sourceIp", "sourcePrefix", "application", "protocol", "tcpProbeMode", "udpProbeMode", "webex", "location", "pathTraces"] + __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "batteryMetrics", "cellularProfile", "platform", "asnDetails", "server", "sourceIp", "sourcePrefix", "application", "protocol", "tcpProbeMode", "udpProbeMode", "webex", "location", "pathTraces"] model_config = ConfigDict( populate_by_name=True, @@ -130,6 +136,12 @@ class PathVisDynamicEndpointTestResult(BaseModel): # override the default output from pydantic by calling `to_dict()` of vpn_profile if self.vpn_profile: _dict['vpnProfile'] = self.vpn_profile.to_dict() + # override the default output from pydantic by calling `to_dict()` of battery_metrics + if self.battery_metrics: + _dict['batteryMetrics'] = self.battery_metrics.to_dict() + # override the default output from pydantic by calling `to_dict()` of cellular_profile + if self.cellular_profile: + _dict['cellularProfile'] = self.cellular_profile.to_dict() # override the default output from pydantic by calling `to_dict()` of asn_details if self.asn_details: _dict['asnDetails'] = self.asn_details.to_dict() @@ -165,6 +177,9 @@ class PathVisDynamicEndpointTestResult(BaseModel): "originalTargetProfile": TargetProfile.from_dict(obj["originalTargetProfile"]) if obj.get("originalTargetProfile") is not None else None, "userProfile": UserProfile.from_dict(obj["userProfile"]) if obj.get("userProfile") is not None else None, "vpnProfile": VpnProfile.from_dict(obj["vpnProfile"]) if obj.get("vpnProfile") is not None else None, + "batteryMetrics": BatteryMetrics.from_dict(obj["batteryMetrics"]) if obj.get("batteryMetrics") is not None else None, + "cellularProfile": CellularProfile.from_dict(obj["cellularProfile"]) if obj.get("cellularProfile") is not None else None, + "platform": obj.get("platform"), "asnDetails": AsnDetails.from_dict(obj["asnDetails"]) if obj.get("asnDetails") is not None else None, "server": obj.get("server"), "sourceIp": obj.get("sourceIp"), diff --git a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_endpoint_test_result.py b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_endpoint_test_result.py index 668dcce2..f15af78c 100644 --- a/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_endpoint_test_result.py +++ b/thousandeyes-sdk-endpoint-test-results/src/thousandeyes_sdk/endpoint_test_results/models/path_vis_endpoint_test_result.py @@ -19,8 +19,11 @@ import json from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional from thousandeyes_sdk.endpoint_test_results.models.asn_details import AsnDetails +from thousandeyes_sdk.endpoint_test_results.models.battery_metrics import BatteryMetrics +from thousandeyes_sdk.endpoint_test_results.models.cellular_profile import CellularProfile from thousandeyes_sdk.endpoint_test_results.models.endpoint_path_trace import EndpointPathTrace from thousandeyes_sdk.endpoint_test_results.models.network_profile import NetworkProfile +from thousandeyes_sdk.endpoint_test_results.models.platform import Platform from thousandeyes_sdk.endpoint_test_results.models.system_metrics import SystemMetrics from thousandeyes_sdk.endpoint_test_results.models.target_profile import TargetProfile from thousandeyes_sdk.endpoint_test_results.models.user_profile import UserProfile @@ -42,13 +45,16 @@ class PathVisEndpointTestResult(BaseModel): original_target_profile: Optional[TargetProfile] = Field(default=None, alias="originalTargetProfile") user_profile: Optional[UserProfile] = Field(default=None, alias="userProfile") vpn_profile: Optional[VpnProfile] = Field(default=None, alias="vpnProfile") + battery_metrics: Optional[BatteryMetrics] = Field(default=None, alias="batteryMetrics") + cellular_profile: Optional[CellularProfile] = Field(default=None, alias="cellularProfile") + platform: Optional[Platform] = None asn_details: Optional[AsnDetails] = Field(default=None, alias="asnDetails") server: Optional[StrictStr] = Field(default=None, description="Target server, including port.") source_ip: Optional[StrictStr] = Field(default=None, description="IP address of source endpoint agent.", alias="sourceIp") source_prefix: Optional[StrictStr] = Field(default=None, description="IP prefix of source endpoint agent.", alias="sourcePrefix") location: Optional[StrictStr] = Field(default=None, description="Geographic location of the path visualization.") path_traces: Optional[List[EndpointPathTrace]] = Field(default=None, description="Shows an iteration of path trace, with each iteration specified by a pathId.", alias="pathTraces") - __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "asnDetails", "server", "sourceIp", "sourcePrefix", "location", "pathTraces"] + __properties: ClassVar[List[str]] = ["aid", "testId", "agentId", "roundId", "serverIp", "networkProfile", "systemMetrics", "originalTargetProfile", "userProfile", "vpnProfile", "batteryMetrics", "cellularProfile", "platform", "asnDetails", "server", "sourceIp", "sourcePrefix", "location", "pathTraces"] model_config = ConfigDict( populate_by_name=True, @@ -121,6 +127,12 @@ class PathVisEndpointTestResult(BaseModel): # override the default output from pydantic by calling `to_dict()` of vpn_profile if self.vpn_profile: _dict['vpnProfile'] = self.vpn_profile.to_dict() + # override the default output from pydantic by calling `to_dict()` of battery_metrics + if self.battery_metrics: + _dict['batteryMetrics'] = self.battery_metrics.to_dict() + # override the default output from pydantic by calling `to_dict()` of cellular_profile + if self.cellular_profile: + _dict['cellularProfile'] = self.cellular_profile.to_dict() # override the default output from pydantic by calling `to_dict()` of asn_details if self.asn_details: _dict['asnDetails'] = self.asn_details.to_dict() @@ -153,6 +165,9 @@ class PathVisEndpointTestResult(BaseModel): "originalTargetProfile": TargetProfile.from_dict(obj["originalTargetProfile"]) if obj.get("originalTargetProfile") is not None else None, "userProfile": UserProfile.from_dict(obj["userProfile"]) if obj.get("userProfile") is not None else None, "vpnProfile": VpnProfile.from_dict(obj["vpnProfile"]) if obj.get("vpnProfile") is not None else None, + "batteryMetrics": BatteryMetrics.from_dict(obj["batteryMetrics"]) if obj.get("batteryMetrics") is not None else None, + "cellularProfile": CellularProfile.from_dict(obj["cellularProfile"]) if obj.get("cellularProfile") is not None else None, + "platform": obj.get("platform"), "asnDetails": AsnDetails.from_dict(obj["asnDetails"]) if obj.get("asnDetails") is not None else None, "server": obj.get("server"), "sourceIp": obj.get("sourceIp"), diff --git a/thousandeyes-sdk-endpoint-test-results/test/test_http_server_endpoint_scheduled_test_results_api.py b/thousandeyes-sdk-endpoint-test-results/test/test_http_server_endpoint_scheduled_test_results_api.py index d1c76853..444d2e6c 100644 --- a/thousandeyes-sdk-endpoint-test-results/test/test_http_server_endpoint_scheduled_test_results_api.py +++ b/thousandeyes-sdk-endpoint-test-results/test/test_http_server_endpoint_scheduled_test_results_api.py @@ -131,11 +131,28 @@ class TestHTTPServerEndpointScheduledTestResultsApi(unittest.TestCase): "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, "errorType" : "connect", + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", "responseCode" : 200, + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "score" : { "applicationScore" : 100.0, "quality" : "great" @@ -241,11 +258,28 @@ class TestHTTPServerEndpointScheduledTestResultsApi(unittest.TestCase): "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, "errorType" : "connect", + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", "responseCode" : 200, + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "score" : { "applicationScore" : 100.0, "quality" : "great" @@ -419,11 +453,28 @@ class TestHTTPServerEndpointScheduledTestResultsApi(unittest.TestCase): "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, "errorType" : "connect", + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", "responseCode" : 200, + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "score" : { "applicationScore" : 100.0, "quality" : "great" @@ -529,11 +580,28 @@ class TestHTTPServerEndpointScheduledTestResultsApi(unittest.TestCase): "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, "errorType" : "connect", + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", "responseCode" : 200, + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "score" : { "applicationScore" : 100.0, "quality" : "great" @@ -707,11 +775,28 @@ class TestHTTPServerEndpointScheduledTestResultsApi(unittest.TestCase): "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, "errorType" : "connect", + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", "responseCode" : 200, + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "score" : { "applicationScore" : 100.0, "quality" : "great" @@ -817,11 +902,28 @@ class TestHTTPServerEndpointScheduledTestResultsApi(unittest.TestCase): "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, "errorType" : "connect", + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", "responseCode" : 200, + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "score" : { "applicationScore" : 100.0, "quality" : "great" diff --git a/thousandeyes-sdk-endpoint-test-results/test/test_local_network_endpoint_test_results_api.py b/thousandeyes-sdk-endpoint-test-results/test/test_local_network_endpoint_test_results_api.py index ae7e3d79..bcf85301 100644 --- a/thousandeyes-sdk-endpoint-test-results/test/test_local_network_endpoint_test_results_api.py +++ b/thousandeyes-sdk-endpoint-test-results/test/test_local_network_endpoint_test_results_api.py @@ -100,9 +100,26 @@ class TestLocalNetworkEndpointTestResultsApi(unittest.TestCase): "score" : 100.0, "quality" : "great" }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "type" : "vpn", "targetPort" : 80, + "platform" : "mac", "target" : "10.0.2.2", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "systemMetrics" : { "cpuUtilization" : { "min" : 0.22, @@ -243,9 +260,26 @@ class TestLocalNetworkEndpointTestResultsApi(unittest.TestCase): "score" : 100.0, "quality" : "great" }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "type" : "vpn", "targetPort" : 80, + "platform" : "mac", "target" : "10.0.2.2", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "systemMetrics" : { "cpuUtilization" : { "min" : 0.22, @@ -450,6 +484,10 @@ class TestLocalNetworkEndpointTestResultsApi(unittest.TestCase): "location" : "Slovenia", "longitude" : 14.5144444 }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "icmpTraceroutes" : [ { "destination" : "13.32.22.232", "hops" : [ { @@ -497,7 +535,20 @@ class TestLocalNetworkEndpointTestResultsApi(unittest.TestCase): } ], "type" : "vpn", "targetPort" : 80, + "platform" : "mac", "target" : "10.0.2.2", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "systemMetrics" : { "cpuUtilization" : { "min" : 0.22, @@ -712,6 +763,10 @@ class TestLocalNetworkEndpointTestResultsApi(unittest.TestCase): "location" : "Slovenia", "longitude" : 14.5144444 }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "icmpTraceroutes" : [ { "destination" : "13.32.22.232", "hops" : [ { @@ -759,7 +814,20 @@ class TestLocalNetworkEndpointTestResultsApi(unittest.TestCase): } ], "type" : "vpn", "targetPort" : 80, + "platform" : "mac", "target" : "10.0.2.2", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "systemMetrics" : { "cpuUtilization" : { "min" : 0.22, diff --git a/thousandeyes-sdk-endpoint-test-results/test/test_network_dynamic_endpoint_test_results_api.py b/thousandeyes-sdk-endpoint-test-results/test/test_network_dynamic_endpoint_test_results_api.py index c1946ef9..0454e9a0 100644 --- a/thousandeyes-sdk-endpoint-test-results/test/test_network_dynamic_endpoint_test_results_api.py +++ b/thousandeyes-sdk-endpoint-test-results/test/test_network_dynamic_endpoint_test_results_api.py @@ -132,10 +132,7 @@ class TestNetworkDynamicEndpointTestResultsApi(unittest.TestCase): "remotePort" : 80, "remoteIpAddress" : "120.98.134.7" }, - "udpProbeMode" : "unknown", "agentId" : "861b7557-cd57-4bbb-b648-00bddf88ef49", - "isIcmpBlocked" : true, - "avgLatency" : 167.04, "minLatency" : 167.0, "vpnProfile" : { "vpnClientNetworkRange" : [ "9.88.37.27", "9.88.37.27" ], @@ -144,41 +141,33 @@ class TestNetworkDynamicEndpointTestResultsApi(unittest.TestCase): "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, "maxLatency" : 168.0, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, - "tcpProbeMode" : "auto", + "platform" : "mac", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "score" : { "applicationScore" : 100.0, "quality" : "great" }, "loss" : 0.0, "protocol" : "tcp", - "systemMetrics" : { - "cpuUtilization" : { - "min" : 0.22, - "median" : 0.61, - "max" : 0.75, - "mean" : 0.55, - "count" : 150, - "stdDev" : 0.01 - }, - "physicalMemoryTotalBytes" : 1024, - "startTimeMs" : 1581508857327, - "physicalMemoryUsedBytes" : { - "min" : 1.2, - "median" : 1.85, - "max" : 2.5, - "mean" : 1.77, - "count" : 155, - "stdDev" : 0.25 - }, - "endTimeMs" : 1581508867333 - }, - "jitter" : 0.076808, - "application" : "webex", - "serverIp" : "185.199.108.153", "networkProfile" : { "previousInterface" : { "publicIpAddress" : "84.255.241.1", @@ -238,6 +227,35 @@ class TestNetworkDynamicEndpointTestResultsApi(unittest.TestCase): "errorMessage" : "ERR_NAME_NOT_RESOLVED", "type" : "zta_service" } ], + "roundId" : 1384309800, + "udpProbeMode" : "unknown", + "isIcmpBlocked" : true, + "avgLatency" : 167.04, + "tcpProbeMode" : "auto", + "systemMetrics" : { + "cpuUtilization" : { + "min" : 0.22, + "median" : 0.61, + "max" : 0.75, + "mean" : 0.55, + "count" : 150, + "stdDev" : 0.01 + }, + "physicalMemoryTotalBytes" : 1024, + "startTimeMs" : 1581508857327, + "physicalMemoryUsedBytes" : { + "min" : 1.2, + "median" : 1.85, + "max" : 2.5, + "mean" : 1.77, + "count" : 155, + "stdDev" : 0.25 + }, + "endTimeMs" : 1581508867333 + }, + "jitter" : 0.076808, + "application" : "webex", + "serverIp" : "185.199.108.153", "testId" : "584739201", "webex" : { "remoteSipSessionId" : "22581707460321454", @@ -246,7 +264,6 @@ class TestNetworkDynamicEndpointTestResultsApi(unittest.TestCase): "correlationId" : "22581707460321454" }, "aid" : "1234", - "roundId" : 1384309800, "errorDetails" : "Error" }, { "originalTargetProfile" : { @@ -254,10 +271,7 @@ class TestNetworkDynamicEndpointTestResultsApi(unittest.TestCase): "remotePort" : 80, "remoteIpAddress" : "120.98.134.7" }, - "udpProbeMode" : "unknown", "agentId" : "861b7557-cd57-4bbb-b648-00bddf88ef49", - "isIcmpBlocked" : true, - "avgLatency" : 167.04, "minLatency" : 167.0, "vpnProfile" : { "vpnClientNetworkRange" : [ "9.88.37.27", "9.88.37.27" ], @@ -266,41 +280,33 @@ class TestNetworkDynamicEndpointTestResultsApi(unittest.TestCase): "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, "maxLatency" : 168.0, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, - "tcpProbeMode" : "auto", + "platform" : "mac", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "score" : { "applicationScore" : 100.0, "quality" : "great" }, "loss" : 0.0, "protocol" : "tcp", - "systemMetrics" : { - "cpuUtilization" : { - "min" : 0.22, - "median" : 0.61, - "max" : 0.75, - "mean" : 0.55, - "count" : 150, - "stdDev" : 0.01 - }, - "physicalMemoryTotalBytes" : 1024, - "startTimeMs" : 1581508857327, - "physicalMemoryUsedBytes" : { - "min" : 1.2, - "median" : 1.85, - "max" : 2.5, - "mean" : 1.77, - "count" : 155, - "stdDev" : 0.25 - }, - "endTimeMs" : 1581508867333 - }, - "jitter" : 0.076808, - "application" : "webex", - "serverIp" : "185.199.108.153", "networkProfile" : { "previousInterface" : { "publicIpAddress" : "84.255.241.1", @@ -360,6 +366,35 @@ class TestNetworkDynamicEndpointTestResultsApi(unittest.TestCase): "errorMessage" : "ERR_NAME_NOT_RESOLVED", "type" : "zta_service" } ], + "roundId" : 1384309800, + "udpProbeMode" : "unknown", + "isIcmpBlocked" : true, + "avgLatency" : 167.04, + "tcpProbeMode" : "auto", + "systemMetrics" : { + "cpuUtilization" : { + "min" : 0.22, + "median" : 0.61, + "max" : 0.75, + "mean" : 0.55, + "count" : 150, + "stdDev" : 0.01 + }, + "physicalMemoryTotalBytes" : 1024, + "startTimeMs" : 1581508857327, + "physicalMemoryUsedBytes" : { + "min" : 1.2, + "median" : 1.85, + "max" : 2.5, + "mean" : 1.77, + "count" : 155, + "stdDev" : 0.25 + }, + "endTimeMs" : 1581508867333 + }, + "jitter" : 0.076808, + "application" : "webex", + "serverIp" : "185.199.108.153", "testId" : "584739201", "webex" : { "remoteSipSessionId" : "22581707460321454", @@ -368,7 +403,6 @@ class TestNetworkDynamicEndpointTestResultsApi(unittest.TestCase): "correlationId" : "22581707460321454" }, "aid" : "1234", - "roundId" : 1384309800, "errorDetails" : "Error" } ], "startDate" : "2022-07-17T22:00:54Z" @@ -462,12 +496,29 @@ class TestNetworkDynamicEndpointTestResultsApi(unittest.TestCase): "vpnType" : "cisco-anyconnect", "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "sourcePrefix" : "196.40.96.0/20", "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", "tcpProbeMode" : "auto", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "protocol" : "tcp", "systemMetrics" : { "cpuUtilization" : { @@ -657,12 +708,29 @@ class TestNetworkDynamicEndpointTestResultsApi(unittest.TestCase): "vpnType" : "cisco-anyconnect", "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "sourcePrefix" : "196.40.96.0/20", "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", "tcpProbeMode" : "auto", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "protocol" : "tcp", "systemMetrics" : { "cpuUtilization" : { @@ -936,12 +1004,29 @@ class TestNetworkDynamicEndpointTestResultsApi(unittest.TestCase): "vpnType" : "cisco-anyconnect", "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "sourcePrefix" : "196.40.96.0/20", "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", "tcpProbeMode" : "auto", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "protocol" : "tcp", "systemMetrics" : { "cpuUtilization" : { @@ -1059,12 +1144,29 @@ class TestNetworkDynamicEndpointTestResultsApi(unittest.TestCase): "vpnType" : "cisco-anyconnect", "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "sourcePrefix" : "196.40.96.0/20", "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", "tcpProbeMode" : "auto", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "protocol" : "tcp", "systemMetrics" : { "cpuUtilization" : { diff --git a/thousandeyes-sdk-endpoint-test-results/test/test_network_endpoint_scheduled_test_results_api.py b/thousandeyes-sdk-endpoint-test-results/test/test_network_endpoint_scheduled_test_results_api.py index 2bdb6f4f..be14ff10 100644 --- a/thousandeyes-sdk-endpoint-test-results/test/test_network_endpoint_scheduled_test_results_api.py +++ b/thousandeyes-sdk-endpoint-test-results/test/test_network_endpoint_scheduled_test_results_api.py @@ -143,10 +143,27 @@ class TestNetworkEndpointScheduledTestResultsApi(unittest.TestCase): "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, "maxLatency" : 168.0, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "score" : { "applicationScore" : 100.0, "quality" : "great" @@ -255,10 +272,27 @@ class TestNetworkEndpointScheduledTestResultsApi(unittest.TestCase): "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, "maxLatency" : 168.0, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "score" : { "applicationScore" : 100.0, "quality" : "great" @@ -424,10 +458,27 @@ class TestNetworkEndpointScheduledTestResultsApi(unittest.TestCase): "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, "maxLatency" : 168.0, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "score" : { "applicationScore" : 100.0, "quality" : "great" @@ -536,10 +587,27 @@ class TestNetworkEndpointScheduledTestResultsApi(unittest.TestCase): "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, "maxLatency" : 168.0, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "score" : { "applicationScore" : 100.0, "quality" : "great" @@ -723,11 +791,28 @@ class TestNetworkEndpointScheduledTestResultsApi(unittest.TestCase): "vpnType" : "cisco-anyconnect", "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "sourcePrefix" : "196.40.96.0/20", "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "systemMetrics" : { "cpuUtilization" : { "min" : 0.22, @@ -908,11 +993,28 @@ class TestNetworkEndpointScheduledTestResultsApi(unittest.TestCase): "vpnType" : "cisco-anyconnect", "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "sourcePrefix" : "196.40.96.0/20", "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "systemMetrics" : { "cpuUtilization" : { "min" : 0.22, @@ -1177,11 +1279,28 @@ class TestNetworkEndpointScheduledTestResultsApi(unittest.TestCase): "vpnType" : "cisco-anyconnect", "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "sourcePrefix" : "196.40.96.0/20", "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "systemMetrics" : { "cpuUtilization" : { "min" : 0.22, @@ -1290,11 +1409,28 @@ class TestNetworkEndpointScheduledTestResultsApi(unittest.TestCase): "vpnType" : "cisco-anyconnect", "vpnClientAddresses" : [ "184.81.113.85", "13.129.91.62" ] }, + "batteryMetrics" : { + "batteryLevel" : "medium", + "batteryLevelNormalizedPercent" : 0.3 + }, "sourcePrefix" : "196.40.96.0/20", "userProfile" : { "userName" : "joeblogs32", "userPrincipalName" : "joeblogs32@c.com" }, + "platform" : "mac", + "cellularProfile" : { + "rssi" : -10, + "advertisedNetworkSubtype" : "LTE/HSPA", + "carrierName" : "T-Mobile", + "rsrq" : -30, + "rsrp" : -30, + "advertisedNetworkGen" : "2g, 3g, 4g, 5g", + "rscp" : -30, + "networkGen" : "2g, 3g, 4g, 5g", + "networkSubtype" : "LTE/HSPA", + "sinr" : 20 + }, "systemMetrics" : { "cpuUtilization" : { "min" : 0.22, diff --git a/thousandeyes-sdk-endpoint-tests/README.md b/thousandeyes-sdk-endpoint-tests/README.md index 965059a8..4bb3d4b9 100644 --- a/thousandeyes-sdk-endpoint-tests/README.md +++ b/thousandeyes-sdk-endpoint-tests/README.md @@ -5,7 +5,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.75 +- API version: 7.0.76 - 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 1c7a438e..854985ae 100644 --- a/thousandeyes-sdk-event-detection/README.md +++ b/thousandeyes-sdk-event-detection/README.md @@ -12,7 +12,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.75 +- API version: 7.0.76 - 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 03af87c1..e9be0a0f 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.75 +- API version: 7.0.76 - 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 a3a9fb05..82cf39f1 100644 --- a/thousandeyes-sdk-internet-insights/README.md +++ b/thousandeyes-sdk-internet-insights/README.md @@ -14,7 +14,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.75 +- API version: 7.0.76 - 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 c897b360..bdae211d 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.75 +- API version: 7.0.76 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-streaming/README.md b/thousandeyes-sdk-streaming/README.md index 11e67c19..494783ff 100644 --- a/thousandeyes-sdk-streaming/README.md +++ b/thousandeyes-sdk-streaming/README.md @@ -15,7 +15,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.75 +- API version: 7.0.76 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator diff --git a/thousandeyes-sdk-tags/README.md b/thousandeyes-sdk-tags/README.md index e56eb10a..a87e030c 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.75 +- API version: 7.0.76 - 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 543356e9..6eaf111b 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.75 +- API version: 7.0.76 - 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 f5b9b5d9..a2d7e877 100644 --- a/thousandeyes-sdk-tests/README.md +++ b/thousandeyes-sdk-tests/README.md @@ -4,7 +4,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.75 +- API version: 7.0.76 - 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 0e0e3946..92935d8d 100644 --- a/thousandeyes-sdk-usage/README.md +++ b/thousandeyes-sdk-usage/README.md @@ -18,7 +18,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.75 +- API version: 7.0.76 - Generator version: 7.6.0 - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator