Compare commits

..

4 Commits
2.17.0 ... main

Author SHA1 Message Date
Miguel Pragosa
e4068d6142
[GitHub Bot] Generated python SDK (#119)
Some checks failed
Python CI / build (push) Has been cancelled
Co-authored-by: API Team <api-team@thousandeyes.com>
2025-12-02 11:32:03 +00:00
Miguel Pragosa
ebbdbcbac7
[GitHub Bot] Generated python SDK (#117)
Some checks failed
Python CI / build (push) Has been cancelled
Co-authored-by: API Team <api-team@thousandeyes.com>
2025-11-11 12:19:25 +00:00
Miguel Pragosa
d44cc6b392
[GitHub Bot] Generated python SDK (#116)
Some checks failed
Python CI / build (push) Has been cancelled
Co-authored-by: API Team <api-team@thousandeyes.com>
2025-10-21 16:42:32 +01:00
Ting
df1bc2ab2f
[GitHub Bot] Generated python SDK (#114)
Some checks failed
Python CI / build (push) Has been cancelled
Co-authored-by: API Team <api-team@thousandeyes.com>
2025-09-30 14:36:04 +01:00
283 changed files with 3326 additions and 254 deletions

View File

@ -14,6 +14,7 @@ docs/AuditUserEvents.md
docs/BaseRole.md docs/BaseRole.md
docs/CloudEnterpriseAgentType.md docs/CloudEnterpriseAgentType.md
docs/ClusterMember.md docs/ClusterMember.md
docs/Coordinates.md
docs/CreatedAccountGroup.md docs/CreatedAccountGroup.md
docs/CreatedUser.md docs/CreatedUser.md
docs/EnterpriseAgent.md docs/EnterpriseAgent.md
@ -78,6 +79,7 @@ src/thousandeyes_sdk/administrative/models/audit_user_events.py
src/thousandeyes_sdk/administrative/models/base_role.py src/thousandeyes_sdk/administrative/models/base_role.py
src/thousandeyes_sdk/administrative/models/cloud_enterprise_agent_type.py src/thousandeyes_sdk/administrative/models/cloud_enterprise_agent_type.py
src/thousandeyes_sdk/administrative/models/cluster_member.py src/thousandeyes_sdk/administrative/models/cluster_member.py
src/thousandeyes_sdk/administrative/models/coordinates.py
src/thousandeyes_sdk/administrative/models/created_account_group.py src/thousandeyes_sdk/administrative/models/created_account_group.py
src/thousandeyes_sdk/administrative/models/created_user.py src/thousandeyes_sdk/administrative/models/created_user.py
src/thousandeyes_sdk/administrative/models/enterprise_agent.py src/thousandeyes_sdk/administrative/models/enterprise_agent.py

View File

@ -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: This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 7.0.62 - API version: 7.0.68
- Generator version: 7.6.0 - Generator version: 7.6.0
- Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator
@ -138,6 +138,7 @@ Class | Method | HTTP request | Description
- [BaseRole](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/BaseRole.md) - [BaseRole](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/BaseRole.md)
- [CloudEnterpriseAgentType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/CloudEnterpriseAgentType.md) - [CloudEnterpriseAgentType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/CloudEnterpriseAgentType.md)
- [ClusterMember](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/ClusterMember.md) - [ClusterMember](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/ClusterMember.md)
- [Coordinates](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/Coordinates.md)
- [CreatedAccountGroup](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/CreatedAccountGroup.md) - [CreatedAccountGroup](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/CreatedAccountGroup.md)
- [CreatedUser](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/CreatedUser.md) - [CreatedUser](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/CreatedUser.md)
- [EnterpriseAgent](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/EnterpriseAgent.md) - [EnterpriseAgent](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/EnterpriseAgent.md)

View File

@ -12,6 +12,7 @@ Name | Type | Description | Notes
**agent_name** | **str** | Name of the agent. | [optional] **agent_name** | **str** | Name of the agent. | [optional]
**location** | **str** | Location of the agent. | [optional] [readonly] **location** | **str** | Location of the agent. | [optional] [readonly]
**country_id** | **str** | 2-digit ISO country code | [optional] [readonly] **country_id** | **str** | 2-digit ISO country code | [optional] [readonly]
**coordinates** | [**Coordinates**](Coordinates.md) | | [optional]
**enabled** | **bool** | Flag indicating if the agent is enabled. | [optional] **enabled** | **bool** | Flag indicating if the agent is enabled. | [optional]
**prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly] **prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly]
**verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly] **verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly]

View File

@ -0,0 +1,31 @@
# Coordinates
Geographic coordinates for agent location.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**latitude** | **float** | The latitude of the agent location in decimal degrees | [optional] [readonly]
**longitude** | **float** | The longitude of the agent location in decimal degrees | [optional] [readonly]
## Example
```python
from thousandeyes_sdk.administrative.models.coordinates import Coordinates
# TODO update the JSON string below
json = "{}"
# create an instance of Coordinates from a JSON string
coordinates_instance = Coordinates.from_json(json)
# print the JSON string representation of the object
print(Coordinates.to_json())
# convert the object into a dict
coordinates_dict = coordinates_instance.to_dict()
# create an instance of Coordinates from a dict
coordinates_from_dict = Coordinates.from_dict(coordinates_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)

View File

@ -13,6 +13,7 @@ Name | Type | Description | Notes
**agent_name** | **str** | Name of the agent. | [optional] **agent_name** | **str** | Name of the agent. | [optional]
**location** | **str** | Location of the agent. | [optional] [readonly] **location** | **str** | Location of the agent. | [optional] [readonly]
**country_id** | **str** | 2-digit ISO country code | [optional] [readonly] **country_id** | **str** | 2-digit ISO country code | [optional] [readonly]
**coordinates** | [**Coordinates**](Coordinates.md) | | [optional]
**enabled** | **bool** | Flag indicating if the agent is enabled. | [optional] **enabled** | **bool** | Flag indicating if the agent is enabled. | [optional]
**prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly] **prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly]
**verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly] **verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly]

View File

@ -12,6 +12,7 @@ Name | Type | Description | Notes
**agent_name** | **str** | Name of the agent. | [optional] **agent_name** | **str** | Name of the agent. | [optional]
**location** | **str** | Location of the agent. | [optional] [readonly] **location** | **str** | Location of the agent. | [optional] [readonly]
**country_id** | **str** | 2-digit ISO country code | [optional] [readonly] **country_id** | **str** | 2-digit ISO country code | [optional] [readonly]
**coordinates** | [**Coordinates**](Coordinates.md) | | [optional]
**enabled** | **bool** | Flag indicating if the agent is enabled. | [optional] **enabled** | **bool** | Flag indicating if the agent is enabled. | [optional]
**prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly] **prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly]
**verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly] **verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly]

View File

@ -34,6 +34,7 @@ from thousandeyes_sdk.administrative.models.audit_user_events import AuditUserEv
from thousandeyes_sdk.administrative.models.base_role import BaseRole from thousandeyes_sdk.administrative.models.base_role import BaseRole
from thousandeyes_sdk.administrative.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType from thousandeyes_sdk.administrative.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType
from thousandeyes_sdk.administrative.models.cluster_member import ClusterMember from thousandeyes_sdk.administrative.models.cluster_member import ClusterMember
from thousandeyes_sdk.administrative.models.coordinates import Coordinates
from thousandeyes_sdk.administrative.models.created_account_group import CreatedAccountGroup from thousandeyes_sdk.administrative.models.created_account_group import CreatedAccountGroup
from thousandeyes_sdk.administrative.models.created_user import CreatedUser from thousandeyes_sdk.administrative.models.created_user import CreatedUser
from thousandeyes_sdk.administrative.models.enterprise_agent import EnterpriseAgent from thousandeyes_sdk.administrative.models.enterprise_agent import EnterpriseAgent

View File

@ -25,6 +25,7 @@ from thousandeyes_sdk.administrative.models.audit_user_events import AuditUserEv
from thousandeyes_sdk.administrative.models.base_role import BaseRole from thousandeyes_sdk.administrative.models.base_role import BaseRole
from thousandeyes_sdk.administrative.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType from thousandeyes_sdk.administrative.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType
from thousandeyes_sdk.administrative.models.cluster_member import ClusterMember from thousandeyes_sdk.administrative.models.cluster_member import ClusterMember
from thousandeyes_sdk.administrative.models.coordinates import Coordinates
from thousandeyes_sdk.administrative.models.created_account_group import CreatedAccountGroup from thousandeyes_sdk.administrative.models.created_account_group import CreatedAccountGroup
from thousandeyes_sdk.administrative.models.created_user import CreatedUser from thousandeyes_sdk.administrative.models.created_user import CreatedUser
from thousandeyes_sdk.administrative.models.enterprise_agent import EnterpriseAgent from thousandeyes_sdk.administrative.models.enterprise_agent import EnterpriseAgent

View File

@ -19,6 +19,7 @@ import json
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.administrative.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType from thousandeyes_sdk.administrative.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType
from thousandeyes_sdk.administrative.models.coordinates import Coordinates
from typing import Optional, Set from typing import Optional, Set
from typing_extensions import Self from typing_extensions import Self
@ -33,11 +34,12 @@ class AgentResponse(BaseModel):
agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName") agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName")
location: Optional[StrictStr] = Field(default=None, description="Location of the agent.") location: Optional[StrictStr] = Field(default=None, description="Location of the agent.")
country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId") country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId")
coordinates: Optional[Coordinates] = None
enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.") enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.")
prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.") prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.")
verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates") verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates")
agent_type: CloudEnterpriseAgentType = Field(alias="agentType") agent_type: CloudEnterpriseAgentType = Field(alias="agentType")
__properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "enabled", "prefix", "verifySslCertificates", "agentType"] __properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "coordinates", "enabled", "prefix", "verifySslCertificates", "agentType"]
model_config = ConfigDict( model_config = ConfigDict(
populate_by_name=True, populate_by_name=True,
@ -95,6 +97,9 @@ class AgentResponse(BaseModel):
exclude=excluded_fields, exclude=excluded_fields,
exclude_none=True, exclude_none=True,
) )
# override the default output from pydantic by calling `to_dict()` of coordinates
if self.coordinates:
_dict['coordinates'] = self.coordinates.to_dict()
return _dict return _dict
@classmethod @classmethod
@ -114,6 +119,7 @@ class AgentResponse(BaseModel):
"agentName": obj.get("agentName"), "agentName": obj.get("agentName"),
"location": obj.get("location"), "location": obj.get("location"),
"countryId": obj.get("countryId"), "countryId": obj.get("countryId"),
"coordinates": Coordinates.from_dict(obj["coordinates"]) if obj.get("coordinates") is not None else None,
"enabled": obj.get("enabled"), "enabled": obj.get("enabled"),
"prefix": obj.get("prefix"), "prefix": obj.get("prefix"),
"verifySslCertificates": obj.get("verifySslCertificates"), "verifySslCertificates": obj.get("verifySslCertificates"),

View File

@ -0,0 +1,93 @@
# coding: utf-8
"""
Administrative API
Manage users, accounts, and account groups in the ThousandEyes platform using the Administrative API. This API provides the following operations to manage your organization: * `/account-groups`: Account groups are used to divide an organization into different sections. These operations can be used to create, retrieve, update and delete account groups. * `/users`: Create, retrieve, update and delete users within an organization. * `/roles`: Create, retrieve and update roles for the current user. * `/permissions`: Retrieve all assignable permissions. Used in the context of modifying roles. * `/audit-user-events`: Retrieve all activity log events. For more information about the administrative models, see [Account Management](https://docs.thousandeyes.com/product-documentation/user-management).
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
from typing import Any, ClassVar, Dict, List, Optional, Union
from typing import Optional, Set
from typing_extensions import Self
class Coordinates(BaseModel):
"""
Geographic coordinates for agent location.
""" # noqa: E501
latitude: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The latitude of the agent location in decimal degrees")
longitude: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The longitude of the agent location in decimal degrees")
__properties: ClassVar[List[str]] = ["latitude", "longitude"]
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 Coordinates 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.
* OpenAPI `readOnly` fields are excluded.
* OpenAPI `readOnly` fields are excluded.
"""
excluded_fields: Set[str] = set([
"latitude",
"longitude",
])
_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 Coordinates from a dict"""
if obj is None:
return None
if not isinstance(obj, dict):
return cls.model_validate(obj)
_obj = cls.model_validate({
"latitude": obj.get("latitude"),
"longitude": obj.get("longitude")
})
return _obj

View File

@ -22,6 +22,7 @@ from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.administrative.models.account_group import AccountGroup from thousandeyes_sdk.administrative.models.account_group import AccountGroup
from thousandeyes_sdk.administrative.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType from thousandeyes_sdk.administrative.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType
from thousandeyes_sdk.administrative.models.cluster_member import ClusterMember from thousandeyes_sdk.administrative.models.cluster_member import ClusterMember
from thousandeyes_sdk.administrative.models.coordinates import Coordinates
from thousandeyes_sdk.administrative.models.enterprise_agent_ipv6_policy import EnterpriseAgentIpv6Policy from thousandeyes_sdk.administrative.models.enterprise_agent_ipv6_policy import EnterpriseAgentIpv6Policy
from thousandeyes_sdk.administrative.models.enterprise_agent_state import EnterpriseAgentState from thousandeyes_sdk.administrative.models.enterprise_agent_state import EnterpriseAgentState
from thousandeyes_sdk.administrative.models.error_detail import ErrorDetail from thousandeyes_sdk.administrative.models.error_detail import ErrorDetail
@ -42,6 +43,7 @@ class EnterpriseAgent(BaseModel):
agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName") agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName")
location: Optional[StrictStr] = Field(default=None, description="Location of the agent.") location: Optional[StrictStr] = Field(default=None, description="Location of the agent.")
country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId") country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId")
coordinates: Optional[Coordinates] = None
enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.") enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.")
prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.") prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.")
verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates") verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates")
@ -60,7 +62,7 @@ class EnterpriseAgent(BaseModel):
target_for_tests: Optional[StrictStr] = Field(default=None, description="Test target IP address.", alias="targetForTests") target_for_tests: Optional[StrictStr] = Field(default=None, description="Test target IP address.", alias="targetForTests")
local_resolution_prefixes: Optional[List[StrictStr]] = Field(default=None, description="To perform rDNS lookups for public IP ranges, this field represents the public IP ranges. The range must be in CIDR notation; for example, 10.1.1.0/24. Maximum of 5 prefixes allowed (Enterprise Agents and Enterprise Agent clusters only).", alias="localResolutionPrefixes") local_resolution_prefixes: Optional[List[StrictStr]] = Field(default=None, description="To perform rDNS lookups for public IP ranges, this field represents the public IP ranges. The range must be in CIDR notation; for example, 10.1.1.0/24. Maximum of 5 prefixes allowed (Enterprise Agents and Enterprise Agent clusters only).", alias="localResolutionPrefixes")
interface_ip_mapping: Optional[List[InterfaceIpMapping]] = Field(default=None, alias="interfaceIpMapping") interface_ip_mapping: Optional[List[InterfaceIpMapping]] = Field(default=None, alias="interfaceIpMapping")
__properties: ClassVar[List[str]] = ["agentType", "ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "enabled", "prefix", "verifySslCertificates", "testIds", "tests", "clusterMembers", "utilization", "accountGroups", "ipv6Policy", "errorDetails", "hostname", "lastSeen", "agentState", "keepBrowserCache", "createdDate", "targetForTests", "localResolutionPrefixes", "interfaceIpMapping"] __properties: ClassVar[List[str]] = ["agentType", "ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "coordinates", "enabled", "prefix", "verifySslCertificates", "testIds", "tests", "clusterMembers", "utilization", "accountGroups", "ipv6Policy", "errorDetails", "hostname", "lastSeen", "agentState", "keepBrowserCache", "createdDate", "targetForTests", "localResolutionPrefixes", "interfaceIpMapping"]
model_config = ConfigDict( model_config = ConfigDict(
populate_by_name=True, populate_by_name=True,
@ -134,6 +136,9 @@ class EnterpriseAgent(BaseModel):
exclude=excluded_fields, exclude=excluded_fields,
exclude_none=True, exclude_none=True,
) )
# override the default output from pydantic by calling `to_dict()` of coordinates
if self.coordinates:
_dict['coordinates'] = self.coordinates.to_dict()
# override the default output from pydantic by calling `to_dict()` of each item in tests (list) # override the default output from pydantic by calling `to_dict()` of each item in tests (list)
_items = [] _items = []
if self.tests: if self.tests:
@ -189,6 +194,7 @@ class EnterpriseAgent(BaseModel):
"agentName": obj.get("agentName"), "agentName": obj.get("agentName"),
"location": obj.get("location"), "location": obj.get("location"),
"countryId": obj.get("countryId"), "countryId": obj.get("countryId"),
"coordinates": Coordinates.from_dict(obj["coordinates"]) if obj.get("coordinates") is not None else None,
"enabled": obj.get("enabled"), "enabled": obj.get("enabled"),
"prefix": obj.get("prefix"), "prefix": obj.get("prefix"),
"verifySslCertificates": obj.get("verifySslCertificates"), "verifySslCertificates": obj.get("verifySslCertificates"),

View File

@ -18,6 +18,7 @@ import json
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.administrative.models.coordinates import Coordinates
from typing import Optional, Set from typing import Optional, Set
from typing_extensions import Self from typing_extensions import Self
@ -32,10 +33,11 @@ class SimpleAgent(BaseModel):
agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName") agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName")
location: Optional[StrictStr] = Field(default=None, description="Location of the agent.") location: Optional[StrictStr] = Field(default=None, description="Location of the agent.")
country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId") country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId")
coordinates: Optional[Coordinates] = None
enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.") enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.")
prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.") prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.")
verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates") verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates")
__properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "enabled", "prefix", "verifySslCertificates"] __properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "coordinates", "enabled", "prefix", "verifySslCertificates"]
model_config = ConfigDict( model_config = ConfigDict(
populate_by_name=True, populate_by_name=True,
@ -93,6 +95,9 @@ class SimpleAgent(BaseModel):
exclude=excluded_fields, exclude=excluded_fields,
exclude_none=True, exclude_none=True,
) )
# override the default output from pydantic by calling `to_dict()` of coordinates
if self.coordinates:
_dict['coordinates'] = self.coordinates.to_dict()
return _dict return _dict
@classmethod @classmethod
@ -112,6 +117,7 @@ class SimpleAgent(BaseModel):
"agentName": obj.get("agentName"), "agentName": obj.get("agentName"),
"location": obj.get("location"), "location": obj.get("location"),
"countryId": obj.get("countryId"), "countryId": obj.get("countryId"),
"coordinates": Coordinates.from_dict(obj["coordinates"]) if obj.get("coordinates") is not None else None,
"enabled": obj.get("enabled"), "enabled": obj.get("enabled"),
"prefix": obj.get("prefix"), "prefix": obj.get("prefix"),
"verifySslCertificates": obj.get("verifySslCertificates") "verifySslCertificates": obj.get("verifySslCertificates")

View File

@ -176,6 +176,10 @@ class TestAccountGroupsApi(unittest.TestCase):
"keepBrowserCache" : true, "keepBrowserCache" : true,
"agentState" : "online", "agentState" : "online",
"localResolutionPrefixes" : [ "10.2.3.3/24", "10.2.3.3/24" ], "localResolutionPrefixes" : [ "10.2.3.3/24", "10.2.3.3/24" ],
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"utilization" : 25, "utilization" : 25,
"testIds" : [ 281474976710706 ], "testIds" : [ 281474976710706 ],
@ -317,6 +321,10 @@ class TestAccountGroupsApi(unittest.TestCase):
"keepBrowserCache" : true, "keepBrowserCache" : true,
"agentState" : "online", "agentState" : "online",
"localResolutionPrefixes" : [ "10.2.3.3/24", "10.2.3.3/24" ], "localResolutionPrefixes" : [ "10.2.3.3/24", "10.2.3.3/24" ],
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"utilization" : 25, "utilization" : 25,
"testIds" : [ 281474976710706 ], "testIds" : [ 281474976710706 ],
@ -571,6 +579,10 @@ class TestAccountGroupsApi(unittest.TestCase):
"keepBrowserCache" : true, "keepBrowserCache" : true,
"agentState" : "online", "agentState" : "online",
"localResolutionPrefixes" : [ "10.2.3.3/24", "10.2.3.3/24" ], "localResolutionPrefixes" : [ "10.2.3.3/24", "10.2.3.3/24" ],
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"utilization" : 25, "utilization" : 25,
"testIds" : [ 281474976710706 ], "testIds" : [ 281474976710706 ],
@ -712,6 +724,10 @@ class TestAccountGroupsApi(unittest.TestCase):
"keepBrowserCache" : true, "keepBrowserCache" : true,
"agentState" : "online", "agentState" : "online",
"localResolutionPrefixes" : [ "10.2.3.3/24", "10.2.3.3/24" ], "localResolutionPrefixes" : [ "10.2.3.3/24", "10.2.3.3/24" ],
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"utilization" : 25, "utilization" : 25,
"testIds" : [ 281474976710706 ], "testIds" : [ 281474976710706 ],

View File

@ -27,6 +27,7 @@ docs/CloudEnterpriseAgent.md
docs/CloudEnterpriseAgentType.md docs/CloudEnterpriseAgentType.md
docs/CloudEnterpriseAgents.md docs/CloudEnterpriseAgents.md
docs/ClusterMember.md docs/ClusterMember.md
docs/Coordinates.md
docs/EnterpriseAgent.md docs/EnterpriseAgent.md
docs/EnterpriseAgentClusterApi.md docs/EnterpriseAgentClusterApi.md
docs/EnterpriseAgentClusterDetail.md docs/EnterpriseAgentClusterDetail.md
@ -91,6 +92,7 @@ src/thousandeyes_sdk/agents/models/cloud_enterprise_agent.py
src/thousandeyes_sdk/agents/models/cloud_enterprise_agent_type.py src/thousandeyes_sdk/agents/models/cloud_enterprise_agent_type.py
src/thousandeyes_sdk/agents/models/cloud_enterprise_agents.py src/thousandeyes_sdk/agents/models/cloud_enterprise_agents.py
src/thousandeyes_sdk/agents/models/cluster_member.py src/thousandeyes_sdk/agents/models/cluster_member.py
src/thousandeyes_sdk/agents/models/coordinates.py
src/thousandeyes_sdk/agents/models/enterprise_agent.py src/thousandeyes_sdk/agents/models/enterprise_agent.py
src/thousandeyes_sdk/agents/models/enterprise_agent_cluster_detail.py src/thousandeyes_sdk/agents/models/enterprise_agent_cluster_detail.py
src/thousandeyes_sdk/agents/models/enterprise_agent_data.py src/thousandeyes_sdk/agents/models/enterprise_agent_data.py

View File

@ -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: This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 7.0.62 - API version: 7.0.68
- Generator version: 7.6.0 - Generator version: 7.6.0
- Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator
@ -135,6 +135,7 @@ Class | Method | HTTP request | Description
- [CloudEnterpriseAgentType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/CloudEnterpriseAgentType.md) - [CloudEnterpriseAgentType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/CloudEnterpriseAgentType.md)
- [CloudEnterpriseAgents](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/CloudEnterpriseAgents.md) - [CloudEnterpriseAgents](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/CloudEnterpriseAgents.md)
- [ClusterMember](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/ClusterMember.md) - [ClusterMember](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/ClusterMember.md)
- [Coordinates](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/Coordinates.md)
- [EnterpriseAgent](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/EnterpriseAgent.md) - [EnterpriseAgent](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/EnterpriseAgent.md)
- [EnterpriseAgentClusterDetail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/EnterpriseAgentClusterDetail.md) - [EnterpriseAgentClusterDetail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/EnterpriseAgentClusterDetail.md)
- [EnterpriseAgentData](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/EnterpriseAgentData.md) - [EnterpriseAgentData](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/EnterpriseAgentData.md)

View File

@ -12,6 +12,7 @@ Name | Type | Description | Notes
**agent_name** | **str** | Name of the agent. | [optional] **agent_name** | **str** | Name of the agent. | [optional]
**location** | **str** | Location of the agent. | [optional] [readonly] **location** | **str** | Location of the agent. | [optional] [readonly]
**country_id** | **str** | 2-digit ISO country code | [optional] [readonly] **country_id** | **str** | 2-digit ISO country code | [optional] [readonly]
**coordinates** | [**Coordinates**](Coordinates.md) | | [optional]
**enabled** | **bool** | Flag indicating if the agent is enabled. | [optional] **enabled** | **bool** | Flag indicating if the agent is enabled. | [optional]
**prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly] **prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly]
**verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly] **verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly]

View File

@ -12,6 +12,7 @@ Name | Type | Description | Notes
**agent_name** | **str** | Name of the agent. | [optional] **agent_name** | **str** | Name of the agent. | [optional]
**location** | **str** | Location of the agent. | [optional] [readonly] **location** | **str** | Location of the agent. | [optional] [readonly]
**country_id** | **str** | 2-digit ISO country code | [optional] [readonly] **country_id** | **str** | 2-digit ISO country code | [optional] [readonly]
**coordinates** | [**Coordinates**](Coordinates.md) | | [optional]
**enabled** | **bool** | Flag indicating if the agent is enabled. | [optional] **enabled** | **bool** | Flag indicating if the agent is enabled. | [optional]
**prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly] **prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly]
**verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly] **verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly]

View File

@ -12,6 +12,7 @@ Name | Type | Description | Notes
**agent_name** | **str** | Name of the agent. | [optional] **agent_name** | **str** | Name of the agent. | [optional]
**location** | **str** | Location of the agent. | [optional] [readonly] **location** | **str** | Location of the agent. | [optional] [readonly]
**country_id** | **str** | 2-digit ISO country code | [optional] [readonly] **country_id** | **str** | 2-digit ISO country code | [optional] [readonly]
**coordinates** | [**Coordinates**](Coordinates.md) | | [optional]
**enabled** | **bool** | Flag indicating if the agent is enabled. | [optional] **enabled** | **bool** | Flag indicating if the agent is enabled. | [optional]
**prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly] **prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly]
**verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly] **verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly]

View File

@ -13,6 +13,7 @@ Name | Type | Description | Notes
**agent_name** | **str** | Name of the agent. | [optional] **agent_name** | **str** | Name of the agent. | [optional]
**location** | **str** | Location of the agent. | [optional] [readonly] **location** | **str** | Location of the agent. | [optional] [readonly]
**country_id** | **str** | 2-digit ISO country code | [optional] [readonly] **country_id** | **str** | 2-digit ISO country code | [optional] [readonly]
**coordinates** | [**Coordinates**](Coordinates.md) | | [optional]
**enabled** | **bool** | Flag indicating if the agent is enabled. | [optional] **enabled** | **bool** | Flag indicating if the agent is enabled. | [optional]
**prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly] **prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly]
**verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly] **verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly]

View File

@ -0,0 +1,31 @@
# Coordinates
Geographic coordinates for agent location.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**latitude** | **float** | The latitude of the agent location in decimal degrees | [optional] [readonly]
**longitude** | **float** | The longitude of the agent location in decimal degrees | [optional] [readonly]
## Example
```python
from thousandeyes_sdk.agents.models.coordinates import Coordinates
# TODO update the JSON string below
json = "{}"
# create an instance of Coordinates from a JSON string
coordinates_instance = Coordinates.from_json(json)
# print the JSON string representation of the object
print(Coordinates.to_json())
# convert the object into a dict
coordinates_dict = coordinates_instance.to_dict()
# create an instance of Coordinates from a dict
coordinates_from_dict = Coordinates.from_dict(coordinates_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)

View File

@ -13,6 +13,7 @@ Name | Type | Description | Notes
**agent_name** | **str** | Name of the agent. | [optional] **agent_name** | **str** | Name of the agent. | [optional]
**location** | **str** | Location of the agent. | [optional] [readonly] **location** | **str** | Location of the agent. | [optional] [readonly]
**country_id** | **str** | 2-digit ISO country code | [optional] [readonly] **country_id** | **str** | 2-digit ISO country code | [optional] [readonly]
**coordinates** | [**Coordinates**](Coordinates.md) | | [optional]
**enabled** | **bool** | Flag indicating if the agent is enabled. | [optional] **enabled** | **bool** | Flag indicating if the agent is enabled. | [optional]
**prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly] **prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly]
**verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly] **verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly]

View File

@ -12,6 +12,7 @@ Name | Type | Description | Notes
**agent_name** | **str** | Name of the agent. | [optional] **agent_name** | **str** | Name of the agent. | [optional]
**location** | **str** | Location of the agent. | [optional] [readonly] **location** | **str** | Location of the agent. | [optional] [readonly]
**country_id** | **str** | 2-digit ISO country code | [optional] [readonly] **country_id** | **str** | 2-digit ISO country code | [optional] [readonly]
**coordinates** | [**Coordinates**](Coordinates.md) | | [optional]
**enabled** | **bool** | Flag indicating if the agent is enabled. | [optional] **enabled** | **bool** | Flag indicating if the agent is enabled. | [optional]
**prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly] **prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly]
**verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly] **verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly]

View File

@ -12,6 +12,7 @@ Name | Type | Description | Notes
**agent_name** | **str** | Name of the agent. | [optional] **agent_name** | **str** | Name of the agent. | [optional]
**location** | **str** | Location of the agent. | [optional] [readonly] **location** | **str** | Location of the agent. | [optional] [readonly]
**country_id** | **str** | 2-digit ISO country code | [optional] [readonly] **country_id** | **str** | 2-digit ISO country code | [optional] [readonly]
**coordinates** | [**Coordinates**](Coordinates.md) | | [optional]
**enabled** | **bool** | Flag indicating if the agent is enabled. | [optional] **enabled** | **bool** | Flag indicating if the agent is enabled. | [optional]
**prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly] **prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly]
**verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly] **verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly]

View File

@ -12,6 +12,7 @@ Name | Type | Description | Notes
**agent_name** | **str** | Name of the agent. | [optional] **agent_name** | **str** | Name of the agent. | [optional]
**location** | **str** | Location of the agent. | [optional] [readonly] **location** | **str** | Location of the agent. | [optional] [readonly]
**country_id** | **str** | 2-digit ISO country code | [optional] [readonly] **country_id** | **str** | 2-digit ISO country code | [optional] [readonly]
**coordinates** | [**Coordinates**](Coordinates.md) | | [optional]
**enabled** | **bool** | Flag indicating if the agent is enabled. | [optional] **enabled** | **bool** | Flag indicating if the agent is enabled. | [optional]
**prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly] **prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly]
**verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly] **verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly]

View File

@ -12,6 +12,7 @@ Name | Type | Description | Notes
**agent_name** | **str** | Name of the agent. | [optional] **agent_name** | **str** | Name of the agent. | [optional]
**location** | **str** | Location of the agent. | [optional] [readonly] **location** | **str** | Location of the agent. | [optional] [readonly]
**country_id** | **str** | 2-digit ISO country code | [optional] [readonly] **country_id** | **str** | 2-digit ISO country code | [optional] [readonly]
**coordinates** | [**Coordinates**](Coordinates.md) | | [optional]
**enabled** | **bool** | Flag indicating if the agent is enabled. | [optional] **enabled** | **bool** | Flag indicating if the agent is enabled. | [optional]
**prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly] **prefix** | **str** | Prefix containing agents public IP address. | [optional] [readonly]
**verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly] **verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it&#39;s set to ignore SSL errors on browserbot-based tests. | [optional] [readonly]

View File

@ -45,6 +45,7 @@ from thousandeyes_sdk.agents.models.cloud_enterprise_agent import CloudEnterpris
from thousandeyes_sdk.agents.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType from thousandeyes_sdk.agents.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType
from thousandeyes_sdk.agents.models.cloud_enterprise_agents import CloudEnterpriseAgents from thousandeyes_sdk.agents.models.cloud_enterprise_agents import CloudEnterpriseAgents
from thousandeyes_sdk.agents.models.cluster_member import ClusterMember from thousandeyes_sdk.agents.models.cluster_member import ClusterMember
from thousandeyes_sdk.agents.models.coordinates import Coordinates
from thousandeyes_sdk.agents.models.enterprise_agent import EnterpriseAgent from thousandeyes_sdk.agents.models.enterprise_agent import EnterpriseAgent
from thousandeyes_sdk.agents.models.enterprise_agent_cluster_detail import EnterpriseAgentClusterDetail from thousandeyes_sdk.agents.models.enterprise_agent_cluster_detail import EnterpriseAgentClusterDetail
from thousandeyes_sdk.agents.models.enterprise_agent_data import EnterpriseAgentData from thousandeyes_sdk.agents.models.enterprise_agent_data import EnterpriseAgentData

View File

@ -36,6 +36,7 @@ from thousandeyes_sdk.agents.models.cloud_enterprise_agent import CloudEnterpris
from thousandeyes_sdk.agents.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType from thousandeyes_sdk.agents.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType
from thousandeyes_sdk.agents.models.cloud_enterprise_agents import CloudEnterpriseAgents from thousandeyes_sdk.agents.models.cloud_enterprise_agents import CloudEnterpriseAgents
from thousandeyes_sdk.agents.models.cluster_member import ClusterMember from thousandeyes_sdk.agents.models.cluster_member import ClusterMember
from thousandeyes_sdk.agents.models.coordinates import Coordinates
from thousandeyes_sdk.agents.models.enterprise_agent import EnterpriseAgent from thousandeyes_sdk.agents.models.enterprise_agent import EnterpriseAgent
from thousandeyes_sdk.agents.models.enterprise_agent_cluster_detail import EnterpriseAgentClusterDetail from thousandeyes_sdk.agents.models.enterprise_agent_cluster_detail import EnterpriseAgentClusterDetail
from thousandeyes_sdk.agents.models.enterprise_agent_data import EnterpriseAgentData from thousandeyes_sdk.agents.models.enterprise_agent_data import EnterpriseAgentData

View File

@ -19,6 +19,7 @@ import json
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.agents.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType from thousandeyes_sdk.agents.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType
from thousandeyes_sdk.agents.models.coordinates import Coordinates
from typing import Optional, Set from typing import Optional, Set
from typing_extensions import Self from typing_extensions import Self
@ -33,11 +34,12 @@ class AgentResponse(BaseModel):
agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName") agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName")
location: Optional[StrictStr] = Field(default=None, description="Location of the agent.") location: Optional[StrictStr] = Field(default=None, description="Location of the agent.")
country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId") country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId")
coordinates: Optional[Coordinates] = None
enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.") enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.")
prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.") prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.")
verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates") verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates")
agent_type: CloudEnterpriseAgentType = Field(alias="agentType") agent_type: CloudEnterpriseAgentType = Field(alias="agentType")
__properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "enabled", "prefix", "verifySslCertificates", "agentType"] __properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "coordinates", "enabled", "prefix", "verifySslCertificates", "agentType"]
model_config = ConfigDict( model_config = ConfigDict(
populate_by_name=True, populate_by_name=True,
@ -95,6 +97,9 @@ class AgentResponse(BaseModel):
exclude=excluded_fields, exclude=excluded_fields,
exclude_none=True, exclude_none=True,
) )
# override the default output from pydantic by calling `to_dict()` of coordinates
if self.coordinates:
_dict['coordinates'] = self.coordinates.to_dict()
return _dict return _dict
@classmethod @classmethod
@ -114,6 +119,7 @@ class AgentResponse(BaseModel):
"agentName": obj.get("agentName"), "agentName": obj.get("agentName"),
"location": obj.get("location"), "location": obj.get("location"),
"countryId": obj.get("countryId"), "countryId": obj.get("countryId"),
"coordinates": Coordinates.from_dict(obj["coordinates"]) if obj.get("coordinates") is not None else None,
"enabled": obj.get("enabled"), "enabled": obj.get("enabled"),
"prefix": obj.get("prefix"), "prefix": obj.get("prefix"),
"verifySslCertificates": obj.get("verifySslCertificates"), "verifySslCertificates": obj.get("verifySslCertificates"),

View File

@ -20,6 +20,7 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from typing_extensions import Annotated from typing_extensions import Annotated
from thousandeyes_sdk.agents.models.agent_label import AgentLabel from thousandeyes_sdk.agents.models.agent_label import AgentLabel
from thousandeyes_sdk.agents.models.coordinates import Coordinates
from thousandeyes_sdk.agents.models.self_links import SelfLinks from thousandeyes_sdk.agents.models.self_links import SelfLinks
from thousandeyes_sdk.agents.models.simple_test import SimpleTest from thousandeyes_sdk.agents.models.simple_test import SimpleTest
from typing import Optional, Set from typing import Optional, Set
@ -36,6 +37,7 @@ class CloudAgentDetail(BaseModel):
agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName") agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName")
location: Optional[StrictStr] = Field(default=None, description="Location of the agent.") location: Optional[StrictStr] = Field(default=None, description="Location of the agent.")
country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId") country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId")
coordinates: Optional[Coordinates] = None
enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.") enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.")
prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.") prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.")
verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates") verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates")
@ -43,7 +45,7 @@ class CloudAgentDetail(BaseModel):
tests: Optional[List[SimpleTest]] = Field(default=None, description="List of tests. See `/tests` for more information.") tests: Optional[List[SimpleTest]] = Field(default=None, description="List of tests. See `/tests` for more information.")
labels: Optional[List[AgentLabel]] = Field(default=None, description="List of labels - see `/labels` for more information.") labels: Optional[List[AgentLabel]] = Field(default=None, description="List of labels - see `/labels` for more information.")
links: Optional[SelfLinks] = Field(default=None, alias="_links") links: Optional[SelfLinks] = Field(default=None, alias="_links")
__properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "enabled", "prefix", "verifySslCertificates", "agentType", "tests", "labels", "_links"] __properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "coordinates", "enabled", "prefix", "verifySslCertificates", "agentType", "tests", "labels", "_links"]
@field_validator('agent_type') @field_validator('agent_type')
def agent_type_validate_regular_expression(cls, value): def agent_type_validate_regular_expression(cls, value):
@ -110,6 +112,9 @@ class CloudAgentDetail(BaseModel):
exclude=excluded_fields, exclude=excluded_fields,
exclude_none=True, exclude_none=True,
) )
# override the default output from pydantic by calling `to_dict()` of coordinates
if self.coordinates:
_dict['coordinates'] = self.coordinates.to_dict()
# override the default output from pydantic by calling `to_dict()` of each item in tests (list) # override the default output from pydantic by calling `to_dict()` of each item in tests (list)
_items = [] _items = []
if self.tests: if self.tests:
@ -146,6 +151,7 @@ class CloudAgentDetail(BaseModel):
"agentName": obj.get("agentName"), "agentName": obj.get("agentName"),
"location": obj.get("location"), "location": obj.get("location"),
"countryId": obj.get("countryId"), "countryId": obj.get("countryId"),
"coordinates": Coordinates.from_dict(obj["coordinates"]) if obj.get("coordinates") is not None else None,
"enabled": obj.get("enabled"), "enabled": obj.get("enabled"),
"prefix": obj.get("prefix"), "prefix": obj.get("prefix"),
"verifySslCertificates": obj.get("verifySslCertificates"), "verifySslCertificates": obj.get("verifySslCertificates"),

View File

@ -0,0 +1,93 @@
# coding: utf-8
"""
Agents API
## Overview Manage Cloud and Enterprise Agents available to your account in ThousandEyes.
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
from typing import Any, ClassVar, Dict, List, Optional, Union
from typing import Optional, Set
from typing_extensions import Self
class Coordinates(BaseModel):
"""
Geographic coordinates for agent location.
""" # noqa: E501
latitude: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The latitude of the agent location in decimal degrees")
longitude: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The longitude of the agent location in decimal degrees")
__properties: ClassVar[List[str]] = ["latitude", "longitude"]
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 Coordinates 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.
* OpenAPI `readOnly` fields are excluded.
* OpenAPI `readOnly` fields are excluded.
"""
excluded_fields: Set[str] = set([
"latitude",
"longitude",
])
_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 Coordinates from a dict"""
if obj is None:
return None
if not isinstance(obj, dict):
return cls.model_validate(obj)
_obj = cls.model_validate({
"latitude": obj.get("latitude"),
"longitude": obj.get("longitude")
})
return _obj

View File

@ -22,6 +22,7 @@ from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.agents.models.account_group import AccountGroup from thousandeyes_sdk.agents.models.account_group import AccountGroup
from thousandeyes_sdk.agents.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType from thousandeyes_sdk.agents.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType
from thousandeyes_sdk.agents.models.cluster_member import ClusterMember from thousandeyes_sdk.agents.models.cluster_member import ClusterMember
from thousandeyes_sdk.agents.models.coordinates import Coordinates
from thousandeyes_sdk.agents.models.enterprise_agent_ipv6_policy import EnterpriseAgentIpv6Policy from thousandeyes_sdk.agents.models.enterprise_agent_ipv6_policy import EnterpriseAgentIpv6Policy
from thousandeyes_sdk.agents.models.enterprise_agent_state import EnterpriseAgentState from thousandeyes_sdk.agents.models.enterprise_agent_state import EnterpriseAgentState
from thousandeyes_sdk.agents.models.error_detail import ErrorDetail from thousandeyes_sdk.agents.models.error_detail import ErrorDetail
@ -42,6 +43,7 @@ class EnterpriseAgent(BaseModel):
agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName") agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName")
location: Optional[StrictStr] = Field(default=None, description="Location of the agent.") location: Optional[StrictStr] = Field(default=None, description="Location of the agent.")
country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId") country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId")
coordinates: Optional[Coordinates] = None
enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.") enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.")
prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.") prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.")
verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates") verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates")
@ -60,7 +62,7 @@ class EnterpriseAgent(BaseModel):
target_for_tests: Optional[StrictStr] = Field(default=None, description="Test target IP address.", alias="targetForTests") target_for_tests: Optional[StrictStr] = Field(default=None, description="Test target IP address.", alias="targetForTests")
local_resolution_prefixes: Optional[List[StrictStr]] = Field(default=None, description="To perform rDNS lookups for public IP ranges, this field represents the public IP ranges. The range must be in CIDR notation; for example, 10.1.1.0/24. Maximum of 5 prefixes allowed (Enterprise Agents and Enterprise Agent clusters only).", alias="localResolutionPrefixes") local_resolution_prefixes: Optional[List[StrictStr]] = Field(default=None, description="To perform rDNS lookups for public IP ranges, this field represents the public IP ranges. The range must be in CIDR notation; for example, 10.1.1.0/24. Maximum of 5 prefixes allowed (Enterprise Agents and Enterprise Agent clusters only).", alias="localResolutionPrefixes")
interface_ip_mapping: Optional[List[InterfaceIpMapping]] = Field(default=None, alias="interfaceIpMapping") interface_ip_mapping: Optional[List[InterfaceIpMapping]] = Field(default=None, alias="interfaceIpMapping")
__properties: ClassVar[List[str]] = ["agentType", "ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "enabled", "prefix", "verifySslCertificates", "testIds", "tests", "clusterMembers", "utilization", "accountGroups", "ipv6Policy", "errorDetails", "hostname", "lastSeen", "agentState", "keepBrowserCache", "createdDate", "targetForTests", "localResolutionPrefixes", "interfaceIpMapping"] __properties: ClassVar[List[str]] = ["agentType", "ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "coordinates", "enabled", "prefix", "verifySslCertificates", "testIds", "tests", "clusterMembers", "utilization", "accountGroups", "ipv6Policy", "errorDetails", "hostname", "lastSeen", "agentState", "keepBrowserCache", "createdDate", "targetForTests", "localResolutionPrefixes", "interfaceIpMapping"]
model_config = ConfigDict( model_config = ConfigDict(
populate_by_name=True, populate_by_name=True,
@ -134,6 +136,9 @@ class EnterpriseAgent(BaseModel):
exclude=excluded_fields, exclude=excluded_fields,
exclude_none=True, exclude_none=True,
) )
# override the default output from pydantic by calling `to_dict()` of coordinates
if self.coordinates:
_dict['coordinates'] = self.coordinates.to_dict()
# override the default output from pydantic by calling `to_dict()` of each item in tests (list) # override the default output from pydantic by calling `to_dict()` of each item in tests (list)
_items = [] _items = []
if self.tests: if self.tests:
@ -189,6 +194,7 @@ class EnterpriseAgent(BaseModel):
"agentName": obj.get("agentName"), "agentName": obj.get("agentName"),
"location": obj.get("location"), "location": obj.get("location"),
"countryId": obj.get("countryId"), "countryId": obj.get("countryId"),
"coordinates": Coordinates.from_dict(obj["coordinates"]) if obj.get("coordinates") is not None else None,
"enabled": obj.get("enabled"), "enabled": obj.get("enabled"),
"prefix": obj.get("prefix"), "prefix": obj.get("prefix"),
"verifySslCertificates": obj.get("verifySslCertificates"), "verifySslCertificates": obj.get("verifySslCertificates"),

View File

@ -23,6 +23,7 @@ from typing_extensions import Annotated
from thousandeyes_sdk.agents.models.account_group import AccountGroup from thousandeyes_sdk.agents.models.account_group import AccountGroup
from thousandeyes_sdk.agents.models.agent_label import AgentLabel from thousandeyes_sdk.agents.models.agent_label import AgentLabel
from thousandeyes_sdk.agents.models.cluster_member import ClusterMember from thousandeyes_sdk.agents.models.cluster_member import ClusterMember
from thousandeyes_sdk.agents.models.coordinates import Coordinates
from thousandeyes_sdk.agents.models.enterprise_agent_ipv6_policy import EnterpriseAgentIpv6Policy from thousandeyes_sdk.agents.models.enterprise_agent_ipv6_policy import EnterpriseAgentIpv6Policy
from thousandeyes_sdk.agents.models.enterprise_agent_state import EnterpriseAgentState from thousandeyes_sdk.agents.models.enterprise_agent_state import EnterpriseAgentState
from thousandeyes_sdk.agents.models.error_detail import ErrorDetail from thousandeyes_sdk.agents.models.error_detail import ErrorDetail
@ -44,6 +45,7 @@ class EnterpriseAgentClusterDetail(BaseModel):
agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName") agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName")
location: Optional[StrictStr] = Field(default=None, description="Location of the agent.") location: Optional[StrictStr] = Field(default=None, description="Location of the agent.")
country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId") country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId")
coordinates: Optional[Coordinates] = None
enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.") enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.")
prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.") prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.")
verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates") verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates")
@ -66,7 +68,7 @@ class EnterpriseAgentClusterDetail(BaseModel):
labels: Optional[List[AgentLabel]] = Field(default=None, description="List of labels. See `/labels` for more information.") labels: Optional[List[AgentLabel]] = Field(default=None, description="List of labels. See `/labels` for more information.")
agent_type: Annotated[str, Field(strict=True)] = Field(description="Enterprise Cluster agent type.", alias="agentType") agent_type: Annotated[str, Field(strict=True)] = Field(description="Enterprise Cluster agent type.", alias="agentType")
links: Optional[SelfLinks] = Field(default=None, alias="_links") links: Optional[SelfLinks] = Field(default=None, alias="_links")
__properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "enabled", "prefix", "verifySslCertificates", "testIds", "tests", "clusterMembers", "utilization", "accountGroups", "ipv6Policy", "errorDetails", "hostname", "lastSeen", "agentState", "keepBrowserCache", "createdDate", "targetForTests", "localResolutionPrefixes", "interfaceIpMapping", "notificationRules", "labels", "agentType", "_links"] __properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "coordinates", "enabled", "prefix", "verifySslCertificates", "testIds", "tests", "clusterMembers", "utilization", "accountGroups", "ipv6Policy", "errorDetails", "hostname", "lastSeen", "agentState", "keepBrowserCache", "createdDate", "targetForTests", "localResolutionPrefixes", "interfaceIpMapping", "notificationRules", "labels", "agentType", "_links"]
@field_validator('agent_type') @field_validator('agent_type')
def agent_type_validate_regular_expression(cls, value): def agent_type_validate_regular_expression(cls, value):
@ -149,6 +151,9 @@ class EnterpriseAgentClusterDetail(BaseModel):
exclude=excluded_fields, exclude=excluded_fields,
exclude_none=True, exclude_none=True,
) )
# override the default output from pydantic by calling `to_dict()` of coordinates
if self.coordinates:
_dict['coordinates'] = self.coordinates.to_dict()
# override the default output from pydantic by calling `to_dict()` of each item in tests (list) # override the default output from pydantic by calling `to_dict()` of each item in tests (list)
_items = [] _items = []
if self.tests: if self.tests:
@ -220,6 +225,7 @@ class EnterpriseAgentClusterDetail(BaseModel):
"agentName": obj.get("agentName"), "agentName": obj.get("agentName"),
"location": obj.get("location"), "location": obj.get("location"),
"countryId": obj.get("countryId"), "countryId": obj.get("countryId"),
"coordinates": Coordinates.from_dict(obj["coordinates"]) if obj.get("coordinates") is not None else None,
"enabled": obj.get("enabled"), "enabled": obj.get("enabled"),
"prefix": obj.get("prefix"), "prefix": obj.get("prefix"),
"verifySslCertificates": obj.get("verifySslCertificates"), "verifySslCertificates": obj.get("verifySslCertificates"),

View File

@ -23,6 +23,7 @@ from typing_extensions import Annotated
from thousandeyes_sdk.agents.models.account_group import AccountGroup from thousandeyes_sdk.agents.models.account_group import AccountGroup
from thousandeyes_sdk.agents.models.agent_label import AgentLabel from thousandeyes_sdk.agents.models.agent_label import AgentLabel
from thousandeyes_sdk.agents.models.cluster_member import ClusterMember from thousandeyes_sdk.agents.models.cluster_member import ClusterMember
from thousandeyes_sdk.agents.models.coordinates import Coordinates
from thousandeyes_sdk.agents.models.enterprise_agent_ipv6_policy import EnterpriseAgentIpv6Policy from thousandeyes_sdk.agents.models.enterprise_agent_ipv6_policy import EnterpriseAgentIpv6Policy
from thousandeyes_sdk.agents.models.enterprise_agent_state import EnterpriseAgentState from thousandeyes_sdk.agents.models.enterprise_agent_state import EnterpriseAgentState
from thousandeyes_sdk.agents.models.error_detail import ErrorDetail from thousandeyes_sdk.agents.models.error_detail import ErrorDetail
@ -44,6 +45,7 @@ class EnterpriseAgentDetail(BaseModel):
agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName") agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName")
location: Optional[StrictStr] = Field(default=None, description="Location of the agent.") location: Optional[StrictStr] = Field(default=None, description="Location of the agent.")
country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId") country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId")
coordinates: Optional[Coordinates] = None
enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.") enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.")
prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.") prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.")
verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates") verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates")
@ -66,7 +68,7 @@ class EnterpriseAgentDetail(BaseModel):
labels: Optional[List[AgentLabel]] = Field(default=None, description="List of labels. See `/labels` for more information.") labels: Optional[List[AgentLabel]] = Field(default=None, description="List of labels. See `/labels` for more information.")
agent_type: Annotated[str, Field(strict=True)] = Field(description="Enterprise agent type.", alias="agentType") agent_type: Annotated[str, Field(strict=True)] = Field(description="Enterprise agent type.", alias="agentType")
links: Optional[SelfLinks] = Field(default=None, alias="_links") links: Optional[SelfLinks] = Field(default=None, alias="_links")
__properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "enabled", "prefix", "verifySslCertificates", "testIds", "tests", "clusterMembers", "utilization", "accountGroups", "ipv6Policy", "errorDetails", "hostname", "lastSeen", "agentState", "keepBrowserCache", "createdDate", "targetForTests", "localResolutionPrefixes", "interfaceIpMapping", "notificationRules", "labels", "agentType", "_links"] __properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "coordinates", "enabled", "prefix", "verifySslCertificates", "testIds", "tests", "clusterMembers", "utilization", "accountGroups", "ipv6Policy", "errorDetails", "hostname", "lastSeen", "agentState", "keepBrowserCache", "createdDate", "targetForTests", "localResolutionPrefixes", "interfaceIpMapping", "notificationRules", "labels", "agentType", "_links"]
@field_validator('agent_type') @field_validator('agent_type')
def agent_type_validate_regular_expression(cls, value): def agent_type_validate_regular_expression(cls, value):
@ -149,6 +151,9 @@ class EnterpriseAgentDetail(BaseModel):
exclude=excluded_fields, exclude=excluded_fields,
exclude_none=True, exclude_none=True,
) )
# override the default output from pydantic by calling `to_dict()` of coordinates
if self.coordinates:
_dict['coordinates'] = self.coordinates.to_dict()
# override the default output from pydantic by calling `to_dict()` of each item in tests (list) # override the default output from pydantic by calling `to_dict()` of each item in tests (list)
_items = [] _items = []
if self.tests: if self.tests:
@ -220,6 +225,7 @@ class EnterpriseAgentDetail(BaseModel):
"agentName": obj.get("agentName"), "agentName": obj.get("agentName"),
"location": obj.get("location"), "location": obj.get("location"),
"countryId": obj.get("countryId"), "countryId": obj.get("countryId"),
"coordinates": Coordinates.from_dict(obj["coordinates"]) if obj.get("coordinates") is not None else None,
"enabled": obj.get("enabled"), "enabled": obj.get("enabled"),
"prefix": obj.get("prefix"), "prefix": obj.get("prefix"),
"verifySslCertificates": obj.get("verifySslCertificates"), "verifySslCertificates": obj.get("verifySslCertificates"),

View File

@ -18,6 +18,7 @@ import json
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.agents.models.coordinates import Coordinates
from typing import Optional, Set from typing import Optional, Set
from typing_extensions import Self from typing_extensions import Self
@ -32,10 +33,11 @@ class SimpleAgent(BaseModel):
agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName") agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName")
location: Optional[StrictStr] = Field(default=None, description="Location of the agent.") location: Optional[StrictStr] = Field(default=None, description="Location of the agent.")
country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId") country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId")
coordinates: Optional[Coordinates] = None
enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.") enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.")
prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.") prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.")
verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates") verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates")
__properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "enabled", "prefix", "verifySslCertificates"] __properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "coordinates", "enabled", "prefix", "verifySslCertificates"]
model_config = ConfigDict( model_config = ConfigDict(
populate_by_name=True, populate_by_name=True,
@ -93,6 +95,9 @@ class SimpleAgent(BaseModel):
exclude=excluded_fields, exclude=excluded_fields,
exclude_none=True, exclude_none=True,
) )
# override the default output from pydantic by calling `to_dict()` of coordinates
if self.coordinates:
_dict['coordinates'] = self.coordinates.to_dict()
return _dict return _dict
@classmethod @classmethod
@ -112,6 +117,7 @@ class SimpleAgent(BaseModel):
"agentName": obj.get("agentName"), "agentName": obj.get("agentName"),
"location": obj.get("location"), "location": obj.get("location"),
"countryId": obj.get("countryId"), "countryId": obj.get("countryId"),
"coordinates": Coordinates.from_dict(obj["coordinates"]) if obj.get("coordinates") is not None else None,
"enabled": obj.get("enabled"), "enabled": obj.get("enabled"),
"prefix": obj.get("prefix"), "prefix": obj.get("prefix"),
"verifySslCertificates": obj.get("verifySslCertificates") "verifySslCertificates": obj.get("verifySslCertificates")

View File

@ -21,6 +21,7 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, Strict
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.agents.models.account_group import AccountGroup from thousandeyes_sdk.agents.models.account_group import AccountGroup
from thousandeyes_sdk.agents.models.cluster_member import ClusterMember from thousandeyes_sdk.agents.models.cluster_member import ClusterMember
from thousandeyes_sdk.agents.models.coordinates import Coordinates
from thousandeyes_sdk.agents.models.enterprise_agent_ipv6_policy import EnterpriseAgentIpv6Policy from thousandeyes_sdk.agents.models.enterprise_agent_ipv6_policy import EnterpriseAgentIpv6Policy
from thousandeyes_sdk.agents.models.enterprise_agent_state import EnterpriseAgentState from thousandeyes_sdk.agents.models.enterprise_agent_state import EnterpriseAgentState
from thousandeyes_sdk.agents.models.error_detail import ErrorDetail from thousandeyes_sdk.agents.models.error_detail import ErrorDetail
@ -40,6 +41,7 @@ class SimpleEnterpriseAgent(BaseModel):
agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName") agent_name: Optional[StrictStr] = Field(default=None, description="Name of the agent.", alias="agentName")
location: Optional[StrictStr] = Field(default=None, description="Location of the agent.") location: Optional[StrictStr] = Field(default=None, description="Location of the agent.")
country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId") country_id: Optional[StrictStr] = Field(default=None, description="2-digit ISO country code", alias="countryId")
coordinates: Optional[Coordinates] = None
enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.") enabled: Optional[StrictBool] = Field(default=None, description="Flag indicating if the agent is enabled.")
prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.") prefix: Optional[StrictStr] = Field(default=None, description="Prefix containing agents public IP address.")
verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates") verify_ssl_certificates: Optional[StrictBool] = Field(default=None, description="Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests.", alias="verifySslCertificates")
@ -58,7 +60,7 @@ class SimpleEnterpriseAgent(BaseModel):
target_for_tests: Optional[StrictStr] = Field(default=None, description="Test target IP address.", alias="targetForTests") target_for_tests: Optional[StrictStr] = Field(default=None, description="Test target IP address.", alias="targetForTests")
local_resolution_prefixes: Optional[List[StrictStr]] = Field(default=None, description="To perform rDNS lookups for public IP ranges, this field represents the public IP ranges. The range must be in CIDR notation; for example, 10.1.1.0/24. Maximum of 5 prefixes allowed (Enterprise Agents and Enterprise Agent clusters only).", alias="localResolutionPrefixes") local_resolution_prefixes: Optional[List[StrictStr]] = Field(default=None, description="To perform rDNS lookups for public IP ranges, this field represents the public IP ranges. The range must be in CIDR notation; for example, 10.1.1.0/24. Maximum of 5 prefixes allowed (Enterprise Agents and Enterprise Agent clusters only).", alias="localResolutionPrefixes")
interface_ip_mapping: Optional[List[InterfaceIpMapping]] = Field(default=None, alias="interfaceIpMapping") interface_ip_mapping: Optional[List[InterfaceIpMapping]] = Field(default=None, alias="interfaceIpMapping")
__properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "enabled", "prefix", "verifySslCertificates", "testIds", "tests", "clusterMembers", "utilization", "accountGroups", "ipv6Policy", "errorDetails", "hostname", "lastSeen", "agentState", "keepBrowserCache", "createdDate", "targetForTests", "localResolutionPrefixes", "interfaceIpMapping"] __properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "coordinates", "enabled", "prefix", "verifySslCertificates", "testIds", "tests", "clusterMembers", "utilization", "accountGroups", "ipv6Policy", "errorDetails", "hostname", "lastSeen", "agentState", "keepBrowserCache", "createdDate", "targetForTests", "localResolutionPrefixes", "interfaceIpMapping"]
model_config = ConfigDict( model_config = ConfigDict(
populate_by_name=True, populate_by_name=True,
@ -132,6 +134,9 @@ class SimpleEnterpriseAgent(BaseModel):
exclude=excluded_fields, exclude=excluded_fields,
exclude_none=True, exclude_none=True,
) )
# override the default output from pydantic by calling `to_dict()` of coordinates
if self.coordinates:
_dict['coordinates'] = self.coordinates.to_dict()
# override the default output from pydantic by calling `to_dict()` of each item in tests (list) # override the default output from pydantic by calling `to_dict()` of each item in tests (list)
_items = [] _items = []
if self.tests: if self.tests:
@ -186,6 +191,7 @@ class SimpleEnterpriseAgent(BaseModel):
"agentName": obj.get("agentName"), "agentName": obj.get("agentName"),
"location": obj.get("location"), "location": obj.get("location"),
"countryId": obj.get("countryId"), "countryId": obj.get("countryId"),
"coordinates": Coordinates.from_dict(obj["coordinates"]) if obj.get("coordinates") is not None else None,
"enabled": obj.get("enabled"), "enabled": obj.get("enabled"),
"prefix": obj.get("prefix"), "prefix": obj.get("prefix"),
"verifySslCertificates": obj.get("verifySslCertificates"), "verifySslCertificates": obj.get("verifySslCertificates"),

View File

@ -99,6 +99,10 @@ class TestCloudAndEnterpriseAgentNotificationRulesApi(unittest.TestCase):
"agentType" : "enterprise-cluster", "agentType" : "enterprise-cluster",
"publicIpAddresses" : [ "192.168.1.78", "f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c" ], "publicIpAddresses" : [ "192.168.1.78", "f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c" ],
"prefix" : "99.128.0.0/11", "prefix" : "99.128.0.0/11",
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"ipAddresses" : [ "99.139.65.220", "9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce" ], "ipAddresses" : [ "99.139.65.220", "9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce" ],
"location" : "San Francisco Bay Area", "location" : "San Francisco Bay Area",
@ -111,6 +115,10 @@ class TestCloudAndEnterpriseAgentNotificationRulesApi(unittest.TestCase):
"agentType" : "enterprise-cluster", "agentType" : "enterprise-cluster",
"publicIpAddresses" : [ "192.168.1.78", "f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c" ], "publicIpAddresses" : [ "192.168.1.78", "f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c" ],
"prefix" : "99.128.0.0/11", "prefix" : "99.128.0.0/11",
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"ipAddresses" : [ "99.139.65.220", "9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce" ], "ipAddresses" : [ "99.139.65.220", "9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce" ],
"location" : "San Francisco Bay Area", "location" : "San Francisco Bay Area",

View File

@ -52,6 +52,10 @@ class TestCloudAndEnterpriseAgentsApi(unittest.TestCase):
} }
}, },
"prefix" : "99.128.0.0/11", "prefix" : "99.128.0.0/11",
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"countryId" : "US", "countryId" : "US",
"enabled" : true, "enabled" : true,
@ -158,6 +162,10 @@ class TestCloudAndEnterpriseAgentsApi(unittest.TestCase):
"agentType" : "enterprise-cluster", "agentType" : "enterprise-cluster",
"publicIpAddresses" : [ "192.168.1.78", "f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c" ], "publicIpAddresses" : [ "192.168.1.78", "f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c" ],
"prefix" : "99.128.0.0/11", "prefix" : "99.128.0.0/11",
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"ipAddresses" : [ "99.139.65.220", "9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce" ], "ipAddresses" : [ "99.139.65.220", "9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce" ],
"location" : "San Francisco Bay Area", "location" : "San Francisco Bay Area",
@ -170,6 +178,10 @@ class TestCloudAndEnterpriseAgentsApi(unittest.TestCase):
"agentType" : "enterprise-cluster", "agentType" : "enterprise-cluster",
"publicIpAddresses" : [ "192.168.1.78", "f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c" ], "publicIpAddresses" : [ "192.168.1.78", "f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c" ],
"prefix" : "99.128.0.0/11", "prefix" : "99.128.0.0/11",
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"ipAddresses" : [ "99.139.65.220", "9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce" ], "ipAddresses" : [ "99.139.65.220", "9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce" ],
"location" : "San Francisco Bay Area", "location" : "San Francisco Bay Area",
@ -219,6 +231,10 @@ class TestCloudAndEnterpriseAgentsApi(unittest.TestCase):
} }
}, },
"prefix" : "99.128.0.0/11", "prefix" : "99.128.0.0/11",
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"countryId" : "US", "countryId" : "US",
"enabled" : true, "enabled" : true,

View File

@ -56,6 +56,10 @@ class TestEnterpriseAgentClusterApi(unittest.TestCase):
} }
}, },
"prefix" : "99.128.0.0/11", "prefix" : "99.128.0.0/11",
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"countryId" : "US", "countryId" : "US",
"enabled" : true, "enabled" : true,
@ -170,6 +174,10 @@ class TestEnterpriseAgentClusterApi(unittest.TestCase):
"agentType" : "enterprise-cluster", "agentType" : "enterprise-cluster",
"publicIpAddresses" : [ "192.168.1.78", "f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c" ], "publicIpAddresses" : [ "192.168.1.78", "f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c" ],
"prefix" : "99.128.0.0/11", "prefix" : "99.128.0.0/11",
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"ipAddresses" : [ "99.139.65.220", "9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce" ], "ipAddresses" : [ "99.139.65.220", "9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce" ],
"location" : "San Francisco Bay Area", "location" : "San Francisco Bay Area",
@ -182,6 +190,10 @@ class TestEnterpriseAgentClusterApi(unittest.TestCase):
"agentType" : "enterprise-cluster", "agentType" : "enterprise-cluster",
"publicIpAddresses" : [ "192.168.1.78", "f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c" ], "publicIpAddresses" : [ "192.168.1.78", "f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c" ],
"prefix" : "99.128.0.0/11", "prefix" : "99.128.0.0/11",
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"ipAddresses" : [ "99.139.65.220", "9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce" ], "ipAddresses" : [ "99.139.65.220", "9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce" ],
"location" : "San Francisco Bay Area", "location" : "San Francisco Bay Area",

View File

@ -56,6 +56,10 @@ class TestTestsAssignmentOnAgentsApi(unittest.TestCase):
} }
}, },
"prefix" : "99.128.0.0/11", "prefix" : "99.128.0.0/11",
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"countryId" : "US", "countryId" : "US",
"enabled" : true, "enabled" : true,
@ -168,6 +172,10 @@ class TestTestsAssignmentOnAgentsApi(unittest.TestCase):
} }
}, },
"prefix" : "99.128.0.0/11", "prefix" : "99.128.0.0/11",
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"countryId" : "US", "countryId" : "US",
"enabled" : true, "enabled" : true,
@ -280,6 +288,10 @@ class TestTestsAssignmentOnAgentsApi(unittest.TestCase):
} }
}, },
"prefix" : "99.128.0.0/11", "prefix" : "99.128.0.0/11",
"coordinates" : {
"latitude" : 37.77493,
"longitude" : -122.41942
},
"agentName" : "thousandeyes-stg-va-254", "agentName" : "thousandeyes-stg-va-254",
"countryId" : "US", "countryId" : "US",
"enabled" : true, "enabled" : true,

View File

@ -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: This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 7.0.62 - API version: 7.0.68
- Generator version: 7.6.0 - Generator version: 7.6.0
- Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator

View File

@ -18,7 +18,7 @@ Name | Type | Description | Notes
**minimum_sources_pct** | **int** | The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert. | [optional] **minimum_sources_pct** | **int** | The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert. | [optional]
**rounds_violating_mode** | [**AlertRoundsViolationMode**](AlertRoundsViolationMode.md) | | [optional] **rounds_violating_mode** | [**AlertRoundsViolationMode**](AlertRoundsViolationMode.md) | | [optional]
**rounds_violating_out_of** | **int** | Specifies the divisor (y value) in the “X of Y times” condition. | **rounds_violating_out_of** | **int** | Specifies the divisor (y value) in the “X of Y times” condition. |
**rounds_violating_required** | **int** | Specifies the numerator (x value) in the “X of Y times” condition. | **rounds_violating_required** | **int** | Specifies the numerator (x value) in the “X of Y times” condition. | [optional]
**include_covered_prefixes** | **bool** | Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules. | [optional] **include_covered_prefixes** | **bool** | Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules. | [optional]
**sensitivity_level** | [**SensitivityLevel**](SensitivityLevel.md) | | [optional] **sensitivity_level** | [**SensitivityLevel**](SensitivityLevel.md) | | [optional]
**severity** | [**Severity**](Severity.md) | | [optional] **severity** | [**Severity**](Severity.md) | | [optional]

View File

@ -18,7 +18,7 @@ Name | Type | Description | Notes
**minimum_sources_pct** | **int** | The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert. | [optional] **minimum_sources_pct** | **int** | The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert. | [optional]
**rounds_violating_mode** | [**AlertRoundsViolationMode**](AlertRoundsViolationMode.md) | | [optional] **rounds_violating_mode** | [**AlertRoundsViolationMode**](AlertRoundsViolationMode.md) | | [optional]
**rounds_violating_out_of** | **int** | Specifies the divisor (y value) in the “X of Y times” condition. | **rounds_violating_out_of** | **int** | Specifies the divisor (y value) in the “X of Y times” condition. |
**rounds_violating_required** | **int** | Specifies the numerator (x value) in the “X of Y times” condition. | **rounds_violating_required** | **int** | Specifies the numerator (x value) in the “X of Y times” condition. | [optional]
**include_covered_prefixes** | **bool** | Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules. | [optional] **include_covered_prefixes** | **bool** | Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules. | [optional]
**sensitivity_level** | [**SensitivityLevel**](SensitivityLevel.md) | | [optional] **sensitivity_level** | [**SensitivityLevel**](SensitivityLevel.md) | | [optional]
**severity** | [**Severity**](Severity.md) | | [optional] **severity** | [**Severity**](Severity.md) | | [optional]

View File

@ -18,7 +18,7 @@ Name | Type | Description | Notes
**minimum_sources_pct** | **int** | The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert. | [optional] **minimum_sources_pct** | **int** | The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert. | [optional]
**rounds_violating_mode** | [**AlertRoundsViolationMode**](AlertRoundsViolationMode.md) | | [optional] **rounds_violating_mode** | [**AlertRoundsViolationMode**](AlertRoundsViolationMode.md) | | [optional]
**rounds_violating_out_of** | **int** | Specifies the divisor (y value) in the “X of Y times” condition. | **rounds_violating_out_of** | **int** | Specifies the divisor (y value) in the “X of Y times” condition. |
**rounds_violating_required** | **int** | Specifies the numerator (x value) in the “X of Y times” condition. | **rounds_violating_required** | **int** | Specifies the numerator (x value) in the “X of Y times” condition. | [optional]
**include_covered_prefixes** | **bool** | Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules. | [optional] **include_covered_prefixes** | **bool** | Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules. | [optional]
**sensitivity_level** | [**SensitivityLevel**](SensitivityLevel.md) | | [optional] **sensitivity_level** | [**SensitivityLevel**](SensitivityLevel.md) | | [optional]
**severity** | [**Severity**](Severity.md) | | [optional] **severity** | [**Severity**](Severity.md) | | [optional]

View File

@ -18,7 +18,7 @@ Name | Type | Description | Notes
**minimum_sources_pct** | **int** | The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert. | [optional] **minimum_sources_pct** | **int** | The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert. | [optional]
**rounds_violating_mode** | [**AlertRoundsViolationMode**](AlertRoundsViolationMode.md) | | [optional] **rounds_violating_mode** | [**AlertRoundsViolationMode**](AlertRoundsViolationMode.md) | | [optional]
**rounds_violating_out_of** | **int** | Specifies the divisor (y value) in the “X of Y times” condition. | **rounds_violating_out_of** | **int** | Specifies the divisor (y value) in the “X of Y times” condition. |
**rounds_violating_required** | **int** | Specifies the numerator (x value) in the “X of Y times” condition. | **rounds_violating_required** | **int** | Specifies the numerator (x value) in the “X of Y times” condition. | [optional]
**include_covered_prefixes** | **bool** | Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules. | [optional] **include_covered_prefixes** | **bool** | Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules. | [optional]
**sensitivity_level** | [**SensitivityLevel**](SensitivityLevel.md) | | [optional] **sensitivity_level** | [**SensitivityLevel**](SensitivityLevel.md) | | [optional]
**severity** | [**Severity**](Severity.md) | | [optional] **severity** | [**Severity**](Severity.md) | | [optional]

View File

@ -44,7 +44,7 @@ class BaseRule(BaseModel):
minimum_sources_pct: Optional[StrictInt] = Field(default=None, description="The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert.", alias="minimumSourcesPct") minimum_sources_pct: Optional[StrictInt] = Field(default=None, description="The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert.", alias="minimumSourcesPct")
rounds_violating_mode: Optional[AlertRoundsViolationMode] = Field(default=None, alias="roundsViolatingMode") rounds_violating_mode: Optional[AlertRoundsViolationMode] = Field(default=None, alias="roundsViolatingMode")
rounds_violating_out_of: StrictInt = Field(description="Specifies the divisor (y value) in the “X of Y times” condition.", alias="roundsViolatingOutOf") rounds_violating_out_of: StrictInt = Field(description="Specifies the divisor (y value) in the “X of Y times” condition.", alias="roundsViolatingOutOf")
rounds_violating_required: StrictInt = Field(description="Specifies the numerator (x value) in the “X of Y times” condition.", alias="roundsViolatingRequired") rounds_violating_required: Optional[StrictInt] = Field(default=None, description="Specifies the numerator (x value) in the “X of Y times” condition.", alias="roundsViolatingRequired")
include_covered_prefixes: Optional[StrictBool] = Field(default=None, description="Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules.", alias="includeCoveredPrefixes") include_covered_prefixes: Optional[StrictBool] = Field(default=None, description="Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules.", alias="includeCoveredPrefixes")
sensitivity_level: Optional[SensitivityLevel] = Field(default=None, alias="sensitivityLevel") sensitivity_level: Optional[SensitivityLevel] = Field(default=None, alias="sensitivityLevel")
severity: Optional[Severity] = None severity: Optional[Severity] = None

View File

@ -46,7 +46,7 @@ class Rule(BaseModel):
minimum_sources_pct: Optional[StrictInt] = Field(default=None, description="The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert.", alias="minimumSourcesPct") minimum_sources_pct: Optional[StrictInt] = Field(default=None, description="The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert.", alias="minimumSourcesPct")
rounds_violating_mode: Optional[AlertRoundsViolationMode] = Field(default=None, alias="roundsViolatingMode") rounds_violating_mode: Optional[AlertRoundsViolationMode] = Field(default=None, alias="roundsViolatingMode")
rounds_violating_out_of: StrictInt = Field(description="Specifies the divisor (y value) in the “X of Y times” condition.", alias="roundsViolatingOutOf") rounds_violating_out_of: StrictInt = Field(description="Specifies the divisor (y value) in the “X of Y times” condition.", alias="roundsViolatingOutOf")
rounds_violating_required: StrictInt = Field(description="Specifies the numerator (x value) in the “X of Y times” condition.", alias="roundsViolatingRequired") rounds_violating_required: Optional[StrictInt] = Field(default=None, description="Specifies the numerator (x value) in the “X of Y times” condition.", alias="roundsViolatingRequired")
include_covered_prefixes: Optional[StrictBool] = Field(default=None, description="Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules.", alias="includeCoveredPrefixes") include_covered_prefixes: Optional[StrictBool] = Field(default=None, description="Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules.", alias="includeCoveredPrefixes")
sensitivity_level: Optional[SensitivityLevel] = Field(default=None, alias="sensitivityLevel") sensitivity_level: Optional[SensitivityLevel] = Field(default=None, alias="sensitivityLevel")
severity: Optional[Severity] = None severity: Optional[Severity] = None

View File

@ -47,7 +47,7 @@ class RuleDetail(BaseModel):
minimum_sources_pct: Optional[StrictInt] = Field(default=None, description="The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert.", alias="minimumSourcesPct") minimum_sources_pct: Optional[StrictInt] = Field(default=None, description="The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert.", alias="minimumSourcesPct")
rounds_violating_mode: Optional[AlertRoundsViolationMode] = Field(default=None, alias="roundsViolatingMode") rounds_violating_mode: Optional[AlertRoundsViolationMode] = Field(default=None, alias="roundsViolatingMode")
rounds_violating_out_of: StrictInt = Field(description="Specifies the divisor (y value) in the “X of Y times” condition.", alias="roundsViolatingOutOf") rounds_violating_out_of: StrictInt = Field(description="Specifies the divisor (y value) in the “X of Y times” condition.", alias="roundsViolatingOutOf")
rounds_violating_required: StrictInt = Field(description="Specifies the numerator (x value) in the “X of Y times” condition.", alias="roundsViolatingRequired") rounds_violating_required: Optional[StrictInt] = Field(default=None, description="Specifies the numerator (x value) in the “X of Y times” condition.", alias="roundsViolatingRequired")
include_covered_prefixes: Optional[StrictBool] = Field(default=None, description="Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules.", alias="includeCoveredPrefixes") include_covered_prefixes: Optional[StrictBool] = Field(default=None, description="Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules.", alias="includeCoveredPrefixes")
sensitivity_level: Optional[SensitivityLevel] = Field(default=None, alias="sensitivityLevel") sensitivity_level: Optional[SensitivityLevel] = Field(default=None, alias="sensitivityLevel")
severity: Optional[Severity] = None severity: Optional[Severity] = None

View File

@ -45,7 +45,7 @@ class RuleDetailUpdate(BaseModel):
minimum_sources_pct: Optional[StrictInt] = Field(default=None, description="The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert.", alias="minimumSourcesPct") minimum_sources_pct: Optional[StrictInt] = Field(default=None, description="The minimum percentage of all assigned agents or monitors that must meet the specified criteria to trigger the alert.", alias="minimumSourcesPct")
rounds_violating_mode: Optional[AlertRoundsViolationMode] = Field(default=None, alias="roundsViolatingMode") rounds_violating_mode: Optional[AlertRoundsViolationMode] = Field(default=None, alias="roundsViolatingMode")
rounds_violating_out_of: StrictInt = Field(description="Specifies the divisor (y value) in the “X of Y times” condition.", alias="roundsViolatingOutOf") rounds_violating_out_of: StrictInt = Field(description="Specifies the divisor (y value) in the “X of Y times” condition.", alias="roundsViolatingOutOf")
rounds_violating_required: StrictInt = Field(description="Specifies the numerator (x value) in the “X of Y times” condition.", alias="roundsViolatingRequired") rounds_violating_required: Optional[StrictInt] = Field(default=None, description="Specifies the numerator (x value) in the “X of Y times” condition.", alias="roundsViolatingRequired")
include_covered_prefixes: Optional[StrictBool] = Field(default=None, description="Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules.", alias="includeCoveredPrefixes") include_covered_prefixes: Optional[StrictBool] = Field(default=None, description="Set true to include covered prefixes in the BGP alert rule. Only applicable to BGP alert rules.", alias="includeCoveredPrefixes")
sensitivity_level: Optional[SensitivityLevel] = Field(default=None, alias="sensitivityLevel") sensitivity_level: Optional[SensitivityLevel] = Field(default=None, alias="sensitivityLevel")
severity: Optional[Severity] = None severity: Optional[Severity] = None

View File

@ -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: This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 7.0.62 - API version: 7.0.68
- Generator version: 7.6.0 - Generator version: 7.6.0
- Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator

View File

@ -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: This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 7.0.62 - API version: 7.0.68
- Generator version: 7.6.0 - Generator version: 7.6.0
- Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator

View File

@ -32,6 +32,7 @@ docs/ApiDuration.md
docs/ApiGeoMapWidget.md docs/ApiGeoMapWidget.md
docs/ApiGraphletPoint.md docs/ApiGraphletPoint.md
docs/ApiGroupedBarchartWidget.md docs/ApiGroupedBarchartWidget.md
docs/ApiListWidget.md
docs/ApiMultiMetricColumn.md docs/ApiMultiMetricColumn.md
docs/ApiMultiMetricColumnData.md docs/ApiMultiMetricColumnData.md
docs/ApiMultiMetricTableWidget.md docs/ApiMultiMetricTableWidget.md
@ -93,6 +94,7 @@ docs/LegacyDurationUnit.md
docs/LegacyWidgetSortDirection.md docs/LegacyWidgetSortDirection.md
docs/LegacyWidgetSortProperty.md docs/LegacyWidgetSortProperty.md
docs/Link.md docs/Link.md
docs/ListDatasource.md
docs/MetricGroup.md docs/MetricGroup.md
docs/MultiMetricsTableDatasource.md docs/MultiMetricsTableDatasource.md
docs/NumbersCardDatasource.md docs/NumbersCardDatasource.md
@ -154,6 +156,7 @@ src/thousandeyes_sdk/dashboards/models/api_duration.py
src/thousandeyes_sdk/dashboards/models/api_geo_map_widget.py src/thousandeyes_sdk/dashboards/models/api_geo_map_widget.py
src/thousandeyes_sdk/dashboards/models/api_graphlet_point.py src/thousandeyes_sdk/dashboards/models/api_graphlet_point.py
src/thousandeyes_sdk/dashboards/models/api_grouped_barchart_widget.py src/thousandeyes_sdk/dashboards/models/api_grouped_barchart_widget.py
src/thousandeyes_sdk/dashboards/models/api_list_widget.py
src/thousandeyes_sdk/dashboards/models/api_multi_metric_column.py src/thousandeyes_sdk/dashboards/models/api_multi_metric_column.py
src/thousandeyes_sdk/dashboards/models/api_multi_metric_column_data.py src/thousandeyes_sdk/dashboards/models/api_multi_metric_column_data.py
src/thousandeyes_sdk/dashboards/models/api_multi_metric_table_widget.py src/thousandeyes_sdk/dashboards/models/api_multi_metric_table_widget.py
@ -212,6 +215,7 @@ src/thousandeyes_sdk/dashboards/models/legacy_duration_unit.py
src/thousandeyes_sdk/dashboards/models/legacy_widget_sort_direction.py src/thousandeyes_sdk/dashboards/models/legacy_widget_sort_direction.py
src/thousandeyes_sdk/dashboards/models/legacy_widget_sort_property.py src/thousandeyes_sdk/dashboards/models/legacy_widget_sort_property.py
src/thousandeyes_sdk/dashboards/models/link.py src/thousandeyes_sdk/dashboards/models/link.py
src/thousandeyes_sdk/dashboards/models/list_datasource.py
src/thousandeyes_sdk/dashboards/models/metric_group.py src/thousandeyes_sdk/dashboards/models/metric_group.py
src/thousandeyes_sdk/dashboards/models/multi_metrics_table_datasource.py src/thousandeyes_sdk/dashboards/models/multi_metrics_table_datasource.py
src/thousandeyes_sdk/dashboards/models/numbers_card_datasource.py src/thousandeyes_sdk/dashboards/models/numbers_card_datasource.py

View File

@ -3,7 +3,7 @@ Manage ThousandEyes Dashboards.
This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 7.0.62 - API version: 7.0.68
- Generator version: 7.6.0 - Generator version: 7.6.0
- Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator
@ -106,6 +106,8 @@ Class | Method | HTTP request | Description
*DashboardsApi* | [**get_dashboard**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/DashboardsApi.md#get_dashboard) | **GET** /dashboards/{dashboardId} | Retrieve dashboard *DashboardsApi* | [**get_dashboard**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/DashboardsApi.md#get_dashboard) | **GET** /dashboards/{dashboardId} | Retrieve dashboard
*DashboardsApi* | [**get_dashboard_widget_data**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/DashboardsApi.md#get_dashboard_widget_data) | **GET** /dashboards/{dashboardId}/widgets/{widgetId} | Retrieve dashboard widget data *DashboardsApi* | [**get_dashboard_widget_data**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/DashboardsApi.md#get_dashboard_widget_data) | **GET** /dashboards/{dashboardId}/widgets/{widgetId} | Retrieve dashboard widget data
*DashboardsApi* | [**get_dashboards**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/DashboardsApi.md#get_dashboards) | **GET** /dashboards | List dashboards *DashboardsApi* | [**get_dashboards**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/DashboardsApi.md#get_dashboards) | **GET** /dashboards | List dashboards
*DashboardsApi* | [**get_individual_card_data**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/DashboardsApi.md#get_individual_card_data) | **GET** /dashboards/{dashboardId}/widgets/{widgetId}/cards/{cardId} | Retrieve individual card data from numbers widget
*DashboardsApi* | [**get_individual_column_data**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/DashboardsApi.md#get_individual_column_data) | **GET** /dashboards/{dashboardId}/widgets/{widgetId}/columns/{columnId} | Retrieve individual column data from multi-metric table widget
*DashboardsApi* | [**update_dashboard**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/DashboardsApi.md#update_dashboard) | **PUT** /dashboards/{dashboardId} | Update dashboard *DashboardsApi* | [**update_dashboard**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/DashboardsApi.md#update_dashboard) | **PUT** /dashboards/{dashboardId} | Update dashboard
*DashboardsFiltersApi* | [**create_dashboard_filter**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/DashboardsFiltersApi.md#create_dashboard_filter) | **POST** /dashboards/filters | Create dashboard filter *DashboardsFiltersApi* | [**create_dashboard_filter**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/DashboardsFiltersApi.md#create_dashboard_filter) | **POST** /dashboards/filters | Create dashboard filter
*DashboardsFiltersApi* | [**delete_dashboard_filter**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/DashboardsFiltersApi.md#delete_dashboard_filter) | **DELETE** /dashboards/filters/{id} | Delete dashboard filter *DashboardsFiltersApi* | [**delete_dashboard_filter**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/DashboardsFiltersApi.md#delete_dashboard_filter) | **DELETE** /dashboards/filters/{id} | Delete dashboard filter
@ -147,6 +149,7 @@ Class | Method | HTTP request | Description
- [ApiGeoMapWidget](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/ApiGeoMapWidget.md) - [ApiGeoMapWidget](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/ApiGeoMapWidget.md)
- [ApiGraphletPoint](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/ApiGraphletPoint.md) - [ApiGraphletPoint](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/ApiGraphletPoint.md)
- [ApiGroupedBarchartWidget](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/ApiGroupedBarchartWidget.md) - [ApiGroupedBarchartWidget](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/ApiGroupedBarchartWidget.md)
- [ApiListWidget](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/ApiListWidget.md)
- [ApiMultiMetricColumn](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/ApiMultiMetricColumn.md) - [ApiMultiMetricColumn](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/ApiMultiMetricColumn.md)
- [ApiMultiMetricColumnData](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/ApiMultiMetricColumnData.md) - [ApiMultiMetricColumnData](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/ApiMultiMetricColumnData.md)
- [ApiMultiMetricTableWidget](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/ApiMultiMetricTableWidget.md) - [ApiMultiMetricTableWidget](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/ApiMultiMetricTableWidget.md)
@ -205,6 +208,7 @@ Class | Method | HTTP request | Description
- [LegacyWidgetSortDirection](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/LegacyWidgetSortDirection.md) - [LegacyWidgetSortDirection](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/LegacyWidgetSortDirection.md)
- [LegacyWidgetSortProperty](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/LegacyWidgetSortProperty.md) - [LegacyWidgetSortProperty](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/LegacyWidgetSortProperty.md)
- [Link](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/Link.md) - [Link](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/Link.md)
- [ListDatasource](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/ListDatasource.md)
- [MetricGroup](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/MetricGroup.md) - [MetricGroup](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/MetricGroup.md)
- [MultiMetricsTableDatasource](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/MultiMetricsTableDatasource.md) - [MultiMetricsTableDatasource](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/MultiMetricsTableDatasource.md)
- [NumbersCardDatasource](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/NumbersCardDatasource.md) - [NumbersCardDatasource](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-dashboards/docs/NumbersCardDatasource.md)

View File

@ -1,5 +1,6 @@
# ApiAlertListWidget # ApiAlertListWidget
A widget that displays a list of alerts based on specified criteria, such as alert type and time frame.
## Properties ## Properties

View File

@ -30,6 +30,8 @@ Name | Type | Description | Notes
**limit** | **int** | Limit configured in the widget. | [optional] **limit** | **int** | Limit configured in the widget. | [optional]
**sort_by** | [**LegacyWidgetSortProperty**](LegacyWidgetSortProperty.md) | | [optional] **sort_by** | [**LegacyWidgetSortProperty**](LegacyWidgetSortProperty.md) | | [optional]
**sort_direction** | [**LegacyWidgetSortDirection**](LegacyWidgetSortDirection.md) | | [optional] **sort_direction** | [**LegacyWidgetSortDirection**](LegacyWidgetSortDirection.md) | | [optional]
**sort_group_by** | [**LegacyWidgetSortProperty**](LegacyWidgetSortProperty.md) | | [optional]
**sort_group_direction** | [**LegacyWidgetSortDirection**](LegacyWidgetSortDirection.md) | | [optional]
**data_source** | [**ColorGridDatasource**](ColorGridDatasource.md) | | [optional] **data_source** | [**ColorGridDatasource**](ColorGridDatasource.md) | | [optional]
## Example ## Example

View File

@ -0,0 +1,47 @@
# ApiListWidget
A widget that displays a list of items, such as events. It can use a time range to limit the items shown.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **str** | Identifier of the widget. | [optional] [readonly]
**title** | **str** | Title of the widget | [optional]
**visual_mode** | [**VisualMode**](VisualMode.md) | | [optional]
**embed_url** | **str** | When &#x60;isEmbedded&#x60; is set to &#x60;true&#x60;, an &#x60;embedUrl&#x60; is provided. | [optional] [readonly]
**is_embedded** | **bool** | Set to &#x60;true&#x60; if widget is marked as embedded; otherwise, set to &#x60;false&#x60;. | [optional]
**metric_group** | [**MetricGroup**](MetricGroup.md) | | [optional]
**direction** | [**DashboardMetricDirection**](DashboardMetricDirection.md) | | [optional]
**metric** | [**DashboardMetric**](DashboardMetric.md) | | [optional]
**filters** | **Dict[str, List[object]]** | (Optional) Specifies the filters applied to the widget. When present, the &#x60;filters&#x60; property displays. Each filter object has two properties: &#x60;filterProperty&#x60; and &#x60;filterValue&#x60;. The &#x60;filterProperty&#x60; can be values like &#x60;AGENT&#x60;, &#x60;ENDPOINT_MACHINE_ID&#x60;, &#x60;TEST&#x60;, &#x60;MONITOR&#x60;, etc. The &#x60;filterValue&#x60; represents an identifier array of the selected property. | [optional]
**measure** | [**ApiWidgetMeasure**](ApiWidgetMeasure.md) | | [optional]
**fixed_timespan** | [**ApiDuration**](ApiDuration.md) | | [optional]
**api_link** | **str** | | [optional] [readonly]
**should_exclude_alert_suppression_windows** | **bool** | Excludes alert suppression window data if set to &#x60;true&#x60;. | [optional]
**links** | [**SelfLinks**](SelfLinks.md) | | [optional]
**type** | **str** | List widget type. Currently supports only &#x60;List&#x60;. |
**sort_direction** | [**LegacyWidgetSortDirection**](LegacyWidgetSortDirection.md) | | [optional]
**active_within** | [**ActiveWithin**](ActiveWithin.md) | | [optional]
**data_source** | [**ListDatasource**](ListDatasource.md) | | [optional]
## Example
```python
from thousandeyes_sdk.dashboards.models.api_list_widget import ApiListWidget
# TODO update the JSON string below
json = "{}"
# create an instance of ApiListWidget from a JSON string
api_list_widget_instance = ApiListWidget.from_json(json)
# print the JSON string representation of the object
print(ApiListWidget.to_json())
# convert the object into a dict
api_list_widget_dict = api_list_widget_instance.to_dict()
# create an instance of ApiListWidget from a dict
api_list_widget_from_dict = ApiListWidget.from_dict(api_list_widget_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)

View File

@ -13,6 +13,7 @@ Name | Type | Description | Notes
**metric** | [**DashboardMetric**](DashboardMetric.md) | | [optional] **metric** | [**DashboardMetric**](DashboardMetric.md) | | [optional]
**filters** | **Dict[str, List[object]]** | (Optional) Specifies the filters applied to the widget. When present, the &#x60;filters&#x60; property displays. Each filter object has two properties: &#x60;filterProperty&#x60; and &#x60;filterValue&#x60;. The &#x60;filterProperty&#x60; can be values like &#x60;AGENT&#x60;, &#x60;ENDPOINT_MACHINE_ID&#x60;, &#x60;TEST&#x60;, &#x60;MONITOR&#x60;, etc. The &#x60;filterValue&#x60; represents an identifier array of the selected property. | [optional] **filters** | **Dict[str, List[object]]** | (Optional) Specifies the filters applied to the widget. When present, the &#x60;filters&#x60; property displays. Each filter object has two properties: &#x60;filterProperty&#x60; and &#x60;filterValue&#x60;. The &#x60;filterProperty&#x60; can be values like &#x60;AGENT&#x60;, &#x60;ENDPOINT_MACHINE_ID&#x60;, &#x60;TEST&#x60;, &#x60;MONITOR&#x60;, etc. The &#x60;filterValue&#x60; represents an identifier array of the selected property. | [optional]
**measure** | [**ApiWidgetMeasure**](ApiWidgetMeasure.md) | | [optional] **measure** | [**ApiWidgetMeasure**](ApiWidgetMeasure.md) | | [optional]
**links** | [**SelfLinks**](SelfLinks.md) | | [optional]
## Example ## Example

View File

@ -11,6 +11,7 @@ Name | Type | Description | Notes
**points** | [**List[ApiWidgetDataPoint]**](ApiWidgetDataPoint.md) | | [optional] **points** | [**List[ApiWidgetDataPoint]**](ApiWidgetDataPoint.md) | | [optional]
**status** | **str** | Message for not fully configured card or no data. | [optional] **status** | **str** | Message for not fully configured card or no data. | [optional]
**alert_suppression_windows** | [**List[ApiDashboardAsw]**](ApiDashboardAsw.md) | | [optional] **alert_suppression_windows** | [**List[ApiDashboardAsw]**](ApiDashboardAsw.md) | | [optional]
**links** | [**SelfLinks**](SelfLinks.md) | | [optional]
## Example ## Example

View File

@ -20,6 +20,7 @@ Name | Type | Description | Notes
**direction** | [**DashboardMetricDirection**](DashboardMetricDirection.md) | | [optional] **direction** | [**DashboardMetricDirection**](DashboardMetricDirection.md) | | [optional]
**metric** | [**DashboardMetric**](DashboardMetric.md) | | [optional] **metric** | [**DashboardMetric**](DashboardMetric.md) | | [optional]
**filters** | **Dict[str, List[object]]** | (Optional) Specifies the filters applied to the widget. When present, the &#x60;filters&#x60; property displays. Each filter object has two properties: &#x60;filterProperty&#x60; and &#x60;filterValue&#x60;. The &#x60;filterProperty&#x60; can be values like &#x60;AGENT&#x60;, &#x60;ENDPOINT_MACHINE_ID&#x60;, &#x60;TEST&#x60;, &#x60;MONITOR&#x60;, etc. The &#x60;filterValue&#x60; represents an identifier array of the selected property. | [optional] **filters** | **Dict[str, List[object]]** | (Optional) Specifies the filters applied to the widget. When present, the &#x60;filters&#x60; property displays. Each filter object has two properties: &#x60;filterProperty&#x60; and &#x60;filterValue&#x60;. The &#x60;filterProperty&#x60; can be values like &#x60;AGENT&#x60;, &#x60;ENDPOINT_MACHINE_ID&#x60;, &#x60;TEST&#x60;, &#x60;MONITOR&#x60;, etc. The &#x60;filterValue&#x60; represents an identifier array of the selected property. | [optional]
**links** | [**SelfLinks**](SelfLinks.md) | | [optional]
## Example ## Example

View File

@ -16,6 +16,7 @@ Name | Type | Description | Notes
**value** | **float** | Aggregated value. | [optional] **value** | **float** | Aggregated value. | [optional]
**status** | **str** | Message for not fully configured card or no data. | [optional] **status** | **str** | Message for not fully configured card or no data. | [optional]
**alert_suppression_windows** | [**List[ApiDashboardAsw]**](ApiDashboardAsw.md) | | [optional] **alert_suppression_windows** | [**List[ApiDashboardAsw]**](ApiDashboardAsw.md) | | [optional]
**links** | [**SelfLinks**](SelfLinks.md) | | [optional]
## Example ## Example

View File

@ -36,6 +36,8 @@ Name | Type | Description | Notes
**limit** | **int** | Limit configured in the widget. | [optional] **limit** | **int** | Limit configured in the widget. | [optional]
**sort_by** | [**LegacyWidgetSortProperty**](LegacyWidgetSortProperty.md) | | [optional] **sort_by** | [**LegacyWidgetSortProperty**](LegacyWidgetSortProperty.md) | | [optional]
**sort_direction** | [**LegacyWidgetSortDirection**](LegacyWidgetSortDirection.md) | | [optional] **sort_direction** | [**LegacyWidgetSortDirection**](LegacyWidgetSortDirection.md) | | [optional]
**sort_group_by** | [**LegacyWidgetSortProperty**](LegacyWidgetSortProperty.md) | | [optional]
**sort_group_direction** | [**LegacyWidgetSortDirection**](LegacyWidgetSortDirection.md) | | [optional]
**is_geo_map_per_test** | **bool** | Indicates whether a separate map is displayed for each test within the widget. When set to true, individual maps are generated. | [optional] **is_geo_map_per_test** | **bool** | Indicates whether a separate map is displayed for each test within the widget. When set to true, individual maps are generated. | [optional]
**axis_group_by** | [**ApiAggregateProperty**](ApiAggregateProperty.md) | | [optional] **axis_group_by** | [**ApiAggregateProperty**](ApiAggregateProperty.md) | | [optional]
**show_labels** | **bool** | | [optional] **show_labels** | **bool** | | [optional]

View File

@ -9,6 +9,8 @@ Method | HTTP request | Description
[**get_dashboard**](DashboardsApi.md#get_dashboard) | **GET** /dashboards/{dashboardId} | Retrieve dashboard [**get_dashboard**](DashboardsApi.md#get_dashboard) | **GET** /dashboards/{dashboardId} | Retrieve dashboard
[**get_dashboard_widget_data**](DashboardsApi.md#get_dashboard_widget_data) | **GET** /dashboards/{dashboardId}/widgets/{widgetId} | Retrieve dashboard widget data [**get_dashboard_widget_data**](DashboardsApi.md#get_dashboard_widget_data) | **GET** /dashboards/{dashboardId}/widgets/{widgetId} | Retrieve dashboard widget data
[**get_dashboards**](DashboardsApi.md#get_dashboards) | **GET** /dashboards | List dashboards [**get_dashboards**](DashboardsApi.md#get_dashboards) | **GET** /dashboards | List dashboards
[**get_individual_card_data**](DashboardsApi.md#get_individual_card_data) | **GET** /dashboards/{dashboardId}/widgets/{widgetId}/cards/{cardId} | Retrieve individual card data from numbers widget
[**get_individual_column_data**](DashboardsApi.md#get_individual_column_data) | **GET** /dashboards/{dashboardId}/widgets/{widgetId}/columns/{columnId} | Retrieve individual column data from multi-metric table widget
[**update_dashboard**](DashboardsApi.md#update_dashboard) | **PUT** /dashboards/{dashboardId} | Update dashboard [**update_dashboard**](DashboardsApi.md#update_dashboard) | **PUT** /dashboards/{dashboardId} | Update dashboard
@ -454,6 +456,198 @@ Name | Type | Description | Notes
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **get_individual_card_data**
> ApiNumbersCardData get_individual_card_data(dashboard_id, widget_id, card_id, aid=aid, window=window, start_date=start_date, end_date=end_date)
Retrieve individual card data from numbers widget
Returns the raw data for an individual card within a numbers widget in the dashboard.
### Example
* Bearer Authentication (BearerAuth):
```python
import thousandeyes_sdk.dashboards
from thousandeyes_sdk.dashboards.models.api_numbers_card_data import ApiNumbersCardData
from thousandeyes_sdk.dashboards.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://api.thousandeyes.com/v7
# See configuration.py for a list of all supported configuration parameters.
configuration = thousandeyes_sdk.core.Configuration(
host = "https://api.thousandeyes.com/v7"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization: BearerAuth
configuration = thousandeyes_sdk.core.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with thousandeyes_sdk.core.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = thousandeyes_sdk.dashboards.DashboardsApi(api_client)
dashboard_id = '646f4d2ce3c99b0536c3821e' # str | A Identifier for a dashboard which can be obtained from the `/dashboards` endpoint.
widget_id = 'unpmg' # str | A Identifier for a widget.
card_id = 'rvwgs' # str | An identifier for a card within the numbers widget.
aid = '1234' # str | A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response. (optional)
window = '12h' # str | A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: `s` for seconds (default if no type is specified), `m` for minutes, `h` for hours, `d` for days, and `w` for weeks. For a precise date range, use `startDate` and `endDate`. (optional)
start_date = '2022-07-17T22:00:54Z' # datetime | Use with the `endDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`. (optional)
end_date = '2022-07-18T22:00:54Z' # datetime | Defaults to current time the request is made. Use with the `startDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`. (optional)
try:
# Retrieve individual card data from numbers widget
api_response = api_instance.get_individual_card_data(dashboard_id, widget_id, card_id, aid=aid, window=window, start_date=start_date, end_date=end_date)
print("The response of DashboardsApi->get_individual_card_data:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling DashboardsApi->get_individual_card_data: %s\n" % e)
```
### Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**dashboard_id** | **str**| A Identifier for a dashboard which can be obtained from the &#x60;/dashboards&#x60; endpoint. |
**widget_id** | **str**| A Identifier for a widget. |
**card_id** | **str**| An identifier for a card within the numbers widget. |
**aid** | **str**| A unique identifier associated with your account group. You can retrieve your &#x60;AccountGroupId&#x60; from the &#x60;/account-groups&#x60; endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response. | [optional]
**window** | **str**| A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: &#x60;s&#x60; for seconds (default if no type is specified), &#x60;m&#x60; for minutes, &#x60;h&#x60; for hours, &#x60;d&#x60; for days, and &#x60;w&#x60; for weeks. For a precise date range, use &#x60;startDate&#x60; and &#x60;endDate&#x60;. | [optional]
**start_date** | **datetime**| Use with the &#x60;endDate&#x60; parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can&#39;t be used with &#x60;window&#x60;. | [optional]
**end_date** | **datetime**| Defaults to current time the request is made. Use with the &#x60;startDate&#x60; parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can&#39;t be used with &#x60;window&#x60;. | [optional]
### Return type
[**ApiNumbersCardData**](ApiNumbersCardData.md)
### Authorization
[BearerAuth](../README.md#BearerAuth)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/hal+json, application/json, application/problem+json
### HTTP response details
| Status code | Description | Response headers |
|-------------|-------------|------------------|
**200** | OK | - |
**400** | Bad Request | - |
**401** | Unauthorized | - |
**403** | Insufficient permissions to query endpoint | - |
**404** | Not found | - |
**429** | Exhausted rate limit for the organization | - |
**500** | Internal server error | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **get_individual_column_data**
> ApiMultiMetricColumnData get_individual_column_data(dashboard_id, widget_id, column_id, aid=aid, window=window, start_date=start_date, end_date=end_date)
Retrieve individual column data from multi-metric table widget
Returns the raw data for an individual column within a multi-metric table widget in the dashboard.
### Example
* Bearer Authentication (BearerAuth):
```python
import thousandeyes_sdk.dashboards
from thousandeyes_sdk.dashboards.models.api_multi_metric_column_data import ApiMultiMetricColumnData
from thousandeyes_sdk.dashboards.rest import ApiException
from pprint import pprint
# Defining the host is optional and defaults to https://api.thousandeyes.com/v7
# See configuration.py for a list of all supported configuration parameters.
configuration = thousandeyes_sdk.core.Configuration(
host = "https://api.thousandeyes.com/v7"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization: BearerAuth
configuration = thousandeyes_sdk.core.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with thousandeyes_sdk.core.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = thousandeyes_sdk.dashboards.DashboardsApi(api_client)
dashboard_id = '646f4d2ce3c99b0536c3821e' # str | A Identifier for a dashboard which can be obtained from the `/dashboards` endpoint.
widget_id = 'unpmg' # str | A Identifier for a widget.
column_id = 'col123' # str | An identifier for a column within the multi-metric table widget.
aid = '1234' # str | A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response. (optional)
window = '12h' # str | A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: `s` for seconds (default if no type is specified), `m` for minutes, `h` for hours, `d` for days, and `w` for weeks. For a precise date range, use `startDate` and `endDate`. (optional)
start_date = '2022-07-17T22:00:54Z' # datetime | Use with the `endDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`. (optional)
end_date = '2022-07-18T22:00:54Z' # datetime | Defaults to current time the request is made. Use with the `startDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`. (optional)
try:
# Retrieve individual column data from multi-metric table widget
api_response = api_instance.get_individual_column_data(dashboard_id, widget_id, column_id, aid=aid, window=window, start_date=start_date, end_date=end_date)
print("The response of DashboardsApi->get_individual_column_data:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling DashboardsApi->get_individual_column_data: %s\n" % e)
```
### Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**dashboard_id** | **str**| A Identifier for a dashboard which can be obtained from the &#x60;/dashboards&#x60; endpoint. |
**widget_id** | **str**| A Identifier for a widget. |
**column_id** | **str**| An identifier for a column within the multi-metric table widget. |
**aid** | **str**| A unique identifier associated with your account group. You can retrieve your &#x60;AccountGroupId&#x60; from the &#x60;/account-groups&#x60; endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response. | [optional]
**window** | **str**| A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: &#x60;s&#x60; for seconds (default if no type is specified), &#x60;m&#x60; for minutes, &#x60;h&#x60; for hours, &#x60;d&#x60; for days, and &#x60;w&#x60; for weeks. For a precise date range, use &#x60;startDate&#x60; and &#x60;endDate&#x60;. | [optional]
**start_date** | **datetime**| Use with the &#x60;endDate&#x60; parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can&#39;t be used with &#x60;window&#x60;. | [optional]
**end_date** | **datetime**| Defaults to current time the request is made. Use with the &#x60;startDate&#x60; parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can&#39;t be used with &#x60;window&#x60;. | [optional]
### Return type
[**ApiMultiMetricColumnData**](ApiMultiMetricColumnData.md)
### Authorization
[BearerAuth](../README.md#BearerAuth)
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/hal+json, application/json, application/problem+json
### HTTP response details
| Status code | Description | Response headers |
|-------------|-------------|------------------|
**200** | OK | - |
**400** | Bad Request | - |
**401** | Unauthorized | - |
**403** | Insufficient permissions to query endpoint | - |
**404** | Not found | - |
**429** | Exhausted rate limit for the organization | - |
**500** | Internal server error | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **update_dashboard** # **update_dashboard**
> Dashboard update_dashboard(dashboard_id, dashboard, aid=aid) > Dashboard update_dashboard(dashboard_id, dashboard, aid=aid)

View File

@ -1,6 +1,6 @@
# EndpointIpVersionTemplate # ListDatasource
IP version the test should use for network tests. Data source for the list widget.
## Properties ## Properties

View File

@ -51,6 +51,7 @@ from thousandeyes_sdk.dashboards.models.api_duration import ApiDuration
from thousandeyes_sdk.dashboards.models.api_geo_map_widget import ApiGeoMapWidget from thousandeyes_sdk.dashboards.models.api_geo_map_widget import ApiGeoMapWidget
from thousandeyes_sdk.dashboards.models.api_graphlet_point import ApiGraphletPoint from thousandeyes_sdk.dashboards.models.api_graphlet_point import ApiGraphletPoint
from thousandeyes_sdk.dashboards.models.api_grouped_barchart_widget import ApiGroupedBarchartWidget from thousandeyes_sdk.dashboards.models.api_grouped_barchart_widget import ApiGroupedBarchartWidget
from thousandeyes_sdk.dashboards.models.api_list_widget import ApiListWidget
from thousandeyes_sdk.dashboards.models.api_multi_metric_column import ApiMultiMetricColumn from thousandeyes_sdk.dashboards.models.api_multi_metric_column import ApiMultiMetricColumn
from thousandeyes_sdk.dashboards.models.api_multi_metric_column_data import ApiMultiMetricColumnData from thousandeyes_sdk.dashboards.models.api_multi_metric_column_data import ApiMultiMetricColumnData
from thousandeyes_sdk.dashboards.models.api_multi_metric_table_widget import ApiMultiMetricTableWidget from thousandeyes_sdk.dashboards.models.api_multi_metric_table_widget import ApiMultiMetricTableWidget
@ -109,6 +110,7 @@ from thousandeyes_sdk.dashboards.models.legacy_duration_unit import LegacyDurati
from thousandeyes_sdk.dashboards.models.legacy_widget_sort_direction import LegacyWidgetSortDirection from thousandeyes_sdk.dashboards.models.legacy_widget_sort_direction import LegacyWidgetSortDirection
from thousandeyes_sdk.dashboards.models.legacy_widget_sort_property import LegacyWidgetSortProperty from thousandeyes_sdk.dashboards.models.legacy_widget_sort_property import LegacyWidgetSortProperty
from thousandeyes_sdk.dashboards.models.link import Link from thousandeyes_sdk.dashboards.models.link import Link
from thousandeyes_sdk.dashboards.models.list_datasource import ListDatasource
from thousandeyes_sdk.dashboards.models.metric_group import MetricGroup from thousandeyes_sdk.dashboards.models.metric_group import MetricGroup
from thousandeyes_sdk.dashboards.models.multi_metrics_table_datasource import MultiMetricsTableDatasource from thousandeyes_sdk.dashboards.models.multi_metrics_table_datasource import MultiMetricsTableDatasource
from thousandeyes_sdk.dashboards.models.numbers_card_datasource import NumbersCardDatasource from thousandeyes_sdk.dashboards.models.numbers_card_datasource import NumbersCardDatasource

View File

@ -23,6 +23,8 @@ from pydantic import Field, StrictFloat, StrictInt, StrictStr, field_validator
from typing import List, Optional, Union from typing import List, Optional, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from thousandeyes_sdk.dashboards.models.api_dashboard import ApiDashboard from thousandeyes_sdk.dashboards.models.api_dashboard import ApiDashboard
from thousandeyes_sdk.dashboards.models.api_multi_metric_column_data import ApiMultiMetricColumnData
from thousandeyes_sdk.dashboards.models.api_numbers_card_data import ApiNumbersCardData
from thousandeyes_sdk.dashboards.models.api_widget_data_response import ApiWidgetDataResponse from thousandeyes_sdk.dashboards.models.api_widget_data_response import ApiWidgetDataResponse
from thousandeyes_sdk.dashboards.models.dashboard import Dashboard from thousandeyes_sdk.dashboards.models.dashboard import Dashboard
from thousandeyes_sdk.dashboards.models.dashboard_order import DashboardOrder from thousandeyes_sdk.dashboards.models.dashboard_order import DashboardOrder
@ -1680,6 +1682,798 @@ class DashboardsApi:
@validate_call
def get_individual_card_data(
self,
dashboard_id: Annotated[StrictStr, Field(description="A Identifier for a dashboard which can be obtained from the `/dashboards` endpoint.")],
widget_id: Annotated[StrictStr, Field(description="A Identifier for a widget.")],
card_id: Annotated[StrictStr, Field(description="An identifier for a card within the numbers widget.")],
aid: Annotated[Optional[StrictStr], Field(description="A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response.")] = None,
window: Annotated[Optional[Annotated[str, Field(strict=True)]], Field(description="A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: `s` for seconds (default if no type is specified), `m` for minutes, `h` for hours, `d` for days, and `w` for weeks. For a precise date range, use `startDate` and `endDate`.")] = None,
start_date: Annotated[Optional[datetime], Field(description="Use with the `endDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.")] = None,
end_date: Annotated[Optional[datetime], Field(description="Defaults to current time the request is made. Use with the `startDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
Tuple[
Annotated[StrictFloat, Field(gt=0)],
Annotated[StrictFloat, Field(gt=0)]
]
] = None,
_request_auth: Optional[Dict[StrictStr, Any]] = None,
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> ApiNumbersCardData:
"""Retrieve individual card data from numbers widget
Returns the raw data for an individual card within a numbers widget in the dashboard.
:param dashboard_id: A Identifier for a dashboard which can be obtained from the `/dashboards` endpoint. (required)
:type dashboard_id: str
:param widget_id: A Identifier for a widget. (required)
:type widget_id: str
:param card_id: An identifier for a card within the numbers widget. (required)
:type card_id: str
:param aid: A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response.
:type aid: str
:param window: A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: `s` for seconds (default if no type is specified), `m` for minutes, `h` for hours, `d` for days, and `w` for weeks. For a precise date range, use `startDate` and `endDate`.
:type window: str
:param start_date: Use with the `endDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.
:type start_date: datetime
:param end_date: Defaults to current time the request is made. Use with the `startDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.
:type end_date: datetime
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
(connection, read) timeouts.
:type _request_timeout: int, tuple(int, int), optional
:param _request_auth: set to override the auth_settings for an a single
request; this effectively ignores the
authentication in the spec for a single request.
:type _request_auth: dict, optional
:param _content_type: force content-type for the request.
:type _content_type: str, Optional
:param _headers: set to override the headers for a single
request; this effectively ignores the headers
in the spec for a single request.
:type _headers: dict, optional
:param _host_index: set to override the host_index for a single
request; this effectively ignores the host_index
in the spec for a single request.
:type _host_index: int, optional
:return: Returns the result object.
""" # noqa: E501
_param = self._get_individual_card_data_serialize(
dashboard_id=dashboard_id,
widget_id=widget_id,
card_id=card_id,
aid=aid,
window=window,
start_date=start_date,
end_date=end_date,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
_host_index=_host_index
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "ApiNumbersCardData",
'400': "ValidationError",
'401': "UnauthorizedError",
'403': "Error",
'404': "Error",
'429': "Error",
'500': "Error",
}
response_data = self.api_client.call_api(
*_param,
_request_timeout=_request_timeout
)
response_data.read()
return self.api_client.response_deserialize(
response_data=response_data,
response_types_map=_response_types_map,
models=thousandeyes_sdk.dashboards.models,
).data
@validate_call
def get_individual_card_data_with_http_info(
self,
dashboard_id: Annotated[StrictStr, Field(description="A Identifier for a dashboard which can be obtained from the `/dashboards` endpoint.")],
widget_id: Annotated[StrictStr, Field(description="A Identifier for a widget.")],
card_id: Annotated[StrictStr, Field(description="An identifier for a card within the numbers widget.")],
aid: Annotated[Optional[StrictStr], Field(description="A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response.")] = None,
window: Annotated[Optional[Annotated[str, Field(strict=True)]], Field(description="A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: `s` for seconds (default if no type is specified), `m` for minutes, `h` for hours, `d` for days, and `w` for weeks. For a precise date range, use `startDate` and `endDate`.")] = None,
start_date: Annotated[Optional[datetime], Field(description="Use with the `endDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.")] = None,
end_date: Annotated[Optional[datetime], Field(description="Defaults to current time the request is made. Use with the `startDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
Tuple[
Annotated[StrictFloat, Field(gt=0)],
Annotated[StrictFloat, Field(gt=0)]
]
] = None,
_request_auth: Optional[Dict[StrictStr, Any]] = None,
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> ApiResponse[ApiNumbersCardData]:
"""Retrieve individual card data from numbers widget
Returns the raw data for an individual card within a numbers widget in the dashboard.
:param dashboard_id: A Identifier for a dashboard which can be obtained from the `/dashboards` endpoint. (required)
:type dashboard_id: str
:param widget_id: A Identifier for a widget. (required)
:type widget_id: str
:param card_id: An identifier for a card within the numbers widget. (required)
:type card_id: str
:param aid: A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response.
:type aid: str
:param window: A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: `s` for seconds (default if no type is specified), `m` for minutes, `h` for hours, `d` for days, and `w` for weeks. For a precise date range, use `startDate` and `endDate`.
:type window: str
:param start_date: Use with the `endDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.
:type start_date: datetime
:param end_date: Defaults to current time the request is made. Use with the `startDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.
:type end_date: datetime
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
(connection, read) timeouts.
:type _request_timeout: int, tuple(int, int), optional
:param _request_auth: set to override the auth_settings for an a single
request; this effectively ignores the
authentication in the spec for a single request.
:type _request_auth: dict, optional
:param _content_type: force content-type for the request.
:type _content_type: str, Optional
:param _headers: set to override the headers for a single
request; this effectively ignores the headers
in the spec for a single request.
:type _headers: dict, optional
:param _host_index: set to override the host_index for a single
request; this effectively ignores the host_index
in the spec for a single request.
:type _host_index: int, optional
:return: Returns the result object.
""" # noqa: E501
_param = self._get_individual_card_data_serialize(
dashboard_id=dashboard_id,
widget_id=widget_id,
card_id=card_id,
aid=aid,
window=window,
start_date=start_date,
end_date=end_date,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
_host_index=_host_index
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "ApiNumbersCardData",
'400': "ValidationError",
'401': "UnauthorizedError",
'403': "Error",
'404': "Error",
'429': "Error",
'500': "Error",
}
response_data = self.api_client.call_api(
*_param,
_request_timeout=_request_timeout
)
response_data.read()
return self.api_client.response_deserialize(
response_data=response_data,
response_types_map=_response_types_map,
models=thousandeyes_sdk.dashboards.models,
)
@validate_call
def get_individual_card_data_without_preload_content(
self,
dashboard_id: Annotated[StrictStr, Field(description="A Identifier for a dashboard which can be obtained from the `/dashboards` endpoint.")],
widget_id: Annotated[StrictStr, Field(description="A Identifier for a widget.")],
card_id: Annotated[StrictStr, Field(description="An identifier for a card within the numbers widget.")],
aid: Annotated[Optional[StrictStr], Field(description="A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response.")] = None,
window: Annotated[Optional[Annotated[str, Field(strict=True)]], Field(description="A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: `s` for seconds (default if no type is specified), `m` for minutes, `h` for hours, `d` for days, and `w` for weeks. For a precise date range, use `startDate` and `endDate`.")] = None,
start_date: Annotated[Optional[datetime], Field(description="Use with the `endDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.")] = None,
end_date: Annotated[Optional[datetime], Field(description="Defaults to current time the request is made. Use with the `startDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
Tuple[
Annotated[StrictFloat, Field(gt=0)],
Annotated[StrictFloat, Field(gt=0)]
]
] = None,
_request_auth: Optional[Dict[StrictStr, Any]] = None,
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> RESTResponseType:
"""Retrieve individual card data from numbers widget
Returns the raw data for an individual card within a numbers widget in the dashboard.
:param dashboard_id: A Identifier for a dashboard which can be obtained from the `/dashboards` endpoint. (required)
:type dashboard_id: str
:param widget_id: A Identifier for a widget. (required)
:type widget_id: str
:param card_id: An identifier for a card within the numbers widget. (required)
:type card_id: str
:param aid: A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response.
:type aid: str
:param window: A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: `s` for seconds (default if no type is specified), `m` for minutes, `h` for hours, `d` for days, and `w` for weeks. For a precise date range, use `startDate` and `endDate`.
:type window: str
:param start_date: Use with the `endDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.
:type start_date: datetime
:param end_date: Defaults to current time the request is made. Use with the `startDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.
:type end_date: datetime
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
(connection, read) timeouts.
:type _request_timeout: int, tuple(int, int), optional
:param _request_auth: set to override the auth_settings for an a single
request; this effectively ignores the
authentication in the spec for a single request.
:type _request_auth: dict, optional
:param _content_type: force content-type for the request.
:type _content_type: str, Optional
:param _headers: set to override the headers for a single
request; this effectively ignores the headers
in the spec for a single request.
:type _headers: dict, optional
:param _host_index: set to override the host_index for a single
request; this effectively ignores the host_index
in the spec for a single request.
:type _host_index: int, optional
:return: Returns the result object.
""" # noqa: E501
_param = self._get_individual_card_data_serialize(
dashboard_id=dashboard_id,
widget_id=widget_id,
card_id=card_id,
aid=aid,
window=window,
start_date=start_date,
end_date=end_date,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
_host_index=_host_index
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "ApiNumbersCardData",
'400': "ValidationError",
'401': "UnauthorizedError",
'403': "Error",
'404': "Error",
'429': "Error",
'500': "Error",
}
response_data = self.api_client.call_api(
*_param,
_request_timeout=_request_timeout
)
return response_data.response
def _get_individual_card_data_serialize(
self,
dashboard_id,
widget_id,
card_id,
aid,
window,
start_date,
end_date,
_request_auth,
_content_type,
_headers,
_host_index,
) -> RequestSerialized:
_host = None
_collection_formats: Dict[str, str] = {
}
_path_params: Dict[str, str] = {}
_query_params: List[Tuple[str, str]] = []
_header_params: Dict[str, Optional[str]] = _headers or {}
_form_params: List[Tuple[str, str]] = []
_files: Dict[str, Union[str, bytes]] = {}
_body_params: Optional[bytes] = None
# process the path parameters
if dashboard_id is not None:
_path_params['dashboardId'] = dashboard_id
if widget_id is not None:
_path_params['widgetId'] = widget_id
if card_id is not None:
_path_params['cardId'] = card_id
# process the query parameters
if aid is not None:
_query_params.append(('aid', aid))
if window is not None:
_query_params.append(('window', window))
if start_date is not None:
if isinstance(start_date, datetime):
_query_params.append(
(
'startDate',
start_date.strftime(
self.api_client.configuration.datetime_format
)
)
)
else:
_query_params.append(('startDate', start_date))
if end_date is not None:
if isinstance(end_date, datetime):
_query_params.append(
(
'endDate',
end_date.strftime(
self.api_client.configuration.datetime_format
)
)
)
else:
_query_params.append(('endDate', end_date))
# process the header parameters
# process the form parameters
# process the body parameter
# set the HTTP header `Accept`
_header_params['Accept'] = self.api_client.select_header_accept(
[
'application/hal+json',
'application/json',
'application/problem+json'
]
)
# authentication setting
_auth_settings: List[str] = [
'BearerAuth'
]
return self.api_client.param_serialize(
method='GET',
resource_path='/dashboards/{dashboardId}/widgets/{widgetId}/cards/{cardId}',
path_params=_path_params,
query_params=_query_params,
header_params=_header_params,
body=_body_params,
post_params=_form_params,
files=_files,
auth_settings=_auth_settings,
collection_formats=_collection_formats,
_host=_host,
_request_auth=_request_auth
)
@validate_call
def get_individual_column_data(
self,
dashboard_id: Annotated[StrictStr, Field(description="A Identifier for a dashboard which can be obtained from the `/dashboards` endpoint.")],
widget_id: Annotated[StrictStr, Field(description="A Identifier for a widget.")],
column_id: Annotated[StrictStr, Field(description="An identifier for a column within the multi-metric table widget.")],
aid: Annotated[Optional[StrictStr], Field(description="A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response.")] = None,
window: Annotated[Optional[Annotated[str, Field(strict=True)]], Field(description="A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: `s` for seconds (default if no type is specified), `m` for minutes, `h` for hours, `d` for days, and `w` for weeks. For a precise date range, use `startDate` and `endDate`.")] = None,
start_date: Annotated[Optional[datetime], Field(description="Use with the `endDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.")] = None,
end_date: Annotated[Optional[datetime], Field(description="Defaults to current time the request is made. Use with the `startDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
Tuple[
Annotated[StrictFloat, Field(gt=0)],
Annotated[StrictFloat, Field(gt=0)]
]
] = None,
_request_auth: Optional[Dict[StrictStr, Any]] = None,
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> ApiMultiMetricColumnData:
"""Retrieve individual column data from multi-metric table widget
Returns the raw data for an individual column within a multi-metric table widget in the dashboard.
:param dashboard_id: A Identifier for a dashboard which can be obtained from the `/dashboards` endpoint. (required)
:type dashboard_id: str
:param widget_id: A Identifier for a widget. (required)
:type widget_id: str
:param column_id: An identifier for a column within the multi-metric table widget. (required)
:type column_id: str
:param aid: A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response.
:type aid: str
:param window: A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: `s` for seconds (default if no type is specified), `m` for minutes, `h` for hours, `d` for days, and `w` for weeks. For a precise date range, use `startDate` and `endDate`.
:type window: str
:param start_date: Use with the `endDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.
:type start_date: datetime
:param end_date: Defaults to current time the request is made. Use with the `startDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.
:type end_date: datetime
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
(connection, read) timeouts.
:type _request_timeout: int, tuple(int, int), optional
:param _request_auth: set to override the auth_settings for an a single
request; this effectively ignores the
authentication in the spec for a single request.
:type _request_auth: dict, optional
:param _content_type: force content-type for the request.
:type _content_type: str, Optional
:param _headers: set to override the headers for a single
request; this effectively ignores the headers
in the spec for a single request.
:type _headers: dict, optional
:param _host_index: set to override the host_index for a single
request; this effectively ignores the host_index
in the spec for a single request.
:type _host_index: int, optional
:return: Returns the result object.
""" # noqa: E501
_param = self._get_individual_column_data_serialize(
dashboard_id=dashboard_id,
widget_id=widget_id,
column_id=column_id,
aid=aid,
window=window,
start_date=start_date,
end_date=end_date,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
_host_index=_host_index
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "ApiMultiMetricColumnData",
'400': "ValidationError",
'401': "UnauthorizedError",
'403': "Error",
'404': "Error",
'429': "Error",
'500': "Error",
}
response_data = self.api_client.call_api(
*_param,
_request_timeout=_request_timeout
)
response_data.read()
return self.api_client.response_deserialize(
response_data=response_data,
response_types_map=_response_types_map,
models=thousandeyes_sdk.dashboards.models,
).data
@validate_call
def get_individual_column_data_with_http_info(
self,
dashboard_id: Annotated[StrictStr, Field(description="A Identifier for a dashboard which can be obtained from the `/dashboards` endpoint.")],
widget_id: Annotated[StrictStr, Field(description="A Identifier for a widget.")],
column_id: Annotated[StrictStr, Field(description="An identifier for a column within the multi-metric table widget.")],
aid: Annotated[Optional[StrictStr], Field(description="A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response.")] = None,
window: Annotated[Optional[Annotated[str, Field(strict=True)]], Field(description="A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: `s` for seconds (default if no type is specified), `m` for minutes, `h` for hours, `d` for days, and `w` for weeks. For a precise date range, use `startDate` and `endDate`.")] = None,
start_date: Annotated[Optional[datetime], Field(description="Use with the `endDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.")] = None,
end_date: Annotated[Optional[datetime], Field(description="Defaults to current time the request is made. Use with the `startDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
Tuple[
Annotated[StrictFloat, Field(gt=0)],
Annotated[StrictFloat, Field(gt=0)]
]
] = None,
_request_auth: Optional[Dict[StrictStr, Any]] = None,
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> ApiResponse[ApiMultiMetricColumnData]:
"""Retrieve individual column data from multi-metric table widget
Returns the raw data for an individual column within a multi-metric table widget in the dashboard.
:param dashboard_id: A Identifier for a dashboard which can be obtained from the `/dashboards` endpoint. (required)
:type dashboard_id: str
:param widget_id: A Identifier for a widget. (required)
:type widget_id: str
:param column_id: An identifier for a column within the multi-metric table widget. (required)
:type column_id: str
:param aid: A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response.
:type aid: str
:param window: A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: `s` for seconds (default if no type is specified), `m` for minutes, `h` for hours, `d` for days, and `w` for weeks. For a precise date range, use `startDate` and `endDate`.
:type window: str
:param start_date: Use with the `endDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.
:type start_date: datetime
:param end_date: Defaults to current time the request is made. Use with the `startDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.
:type end_date: datetime
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
(connection, read) timeouts.
:type _request_timeout: int, tuple(int, int), optional
:param _request_auth: set to override the auth_settings for an a single
request; this effectively ignores the
authentication in the spec for a single request.
:type _request_auth: dict, optional
:param _content_type: force content-type for the request.
:type _content_type: str, Optional
:param _headers: set to override the headers for a single
request; this effectively ignores the headers
in the spec for a single request.
:type _headers: dict, optional
:param _host_index: set to override the host_index for a single
request; this effectively ignores the host_index
in the spec for a single request.
:type _host_index: int, optional
:return: Returns the result object.
""" # noqa: E501
_param = self._get_individual_column_data_serialize(
dashboard_id=dashboard_id,
widget_id=widget_id,
column_id=column_id,
aid=aid,
window=window,
start_date=start_date,
end_date=end_date,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
_host_index=_host_index
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "ApiMultiMetricColumnData",
'400': "ValidationError",
'401': "UnauthorizedError",
'403': "Error",
'404': "Error",
'429': "Error",
'500': "Error",
}
response_data = self.api_client.call_api(
*_param,
_request_timeout=_request_timeout
)
response_data.read()
return self.api_client.response_deserialize(
response_data=response_data,
response_types_map=_response_types_map,
models=thousandeyes_sdk.dashboards.models,
)
@validate_call
def get_individual_column_data_without_preload_content(
self,
dashboard_id: Annotated[StrictStr, Field(description="A Identifier for a dashboard which can be obtained from the `/dashboards` endpoint.")],
widget_id: Annotated[StrictStr, Field(description="A Identifier for a widget.")],
column_id: Annotated[StrictStr, Field(description="An identifier for a column within the multi-metric table widget.")],
aid: Annotated[Optional[StrictStr], Field(description="A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response.")] = None,
window: Annotated[Optional[Annotated[str, Field(strict=True)]], Field(description="A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: `s` for seconds (default if no type is specified), `m` for minutes, `h` for hours, `d` for days, and `w` for weeks. For a precise date range, use `startDate` and `endDate`.")] = None,
start_date: Annotated[Optional[datetime], Field(description="Use with the `endDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.")] = None,
end_date: Annotated[Optional[datetime], Field(description="Defaults to current time the request is made. Use with the `startDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
Tuple[
Annotated[StrictFloat, Field(gt=0)],
Annotated[StrictFloat, Field(gt=0)]
]
] = None,
_request_auth: Optional[Dict[StrictStr, Any]] = None,
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> RESTResponseType:
"""Retrieve individual column data from multi-metric table widget
Returns the raw data for an individual column within a multi-metric table widget in the dashboard.
:param dashboard_id: A Identifier for a dashboard which can be obtained from the `/dashboards` endpoint. (required)
:type dashboard_id: str
:param widget_id: A Identifier for a widget. (required)
:type widget_id: str
:param column_id: An identifier for a column within the multi-metric table widget. (required)
:type column_id: str
:param aid: A unique identifier associated with your account group. You can retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that you must be assigned to the target account group. Specifying this parameter without being assigned to the target account group will result in an error response.
:type aid: str
:param window: A dynamic time interval up to the current time of the request. Specify the interval as a number followed by an optional type: `s` for seconds (default if no type is specified), `m` for minutes, `h` for hours, `d` for days, and `w` for weeks. For a precise date range, use `startDate` and `endDate`.
:type window: str
:param start_date: Use with the `endDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.
:type start_date: datetime
:param end_date: Defaults to current time the request is made. Use with the `startDate` parameter. Include the complete time (hours, minutes, and seconds) in UTC time zone, following the ISO 8601 date-time format. See the example for reference. Please note that this parameter can't be used with `window`.
:type end_date: datetime
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
(connection, read) timeouts.
:type _request_timeout: int, tuple(int, int), optional
:param _request_auth: set to override the auth_settings for an a single
request; this effectively ignores the
authentication in the spec for a single request.
:type _request_auth: dict, optional
:param _content_type: force content-type for the request.
:type _content_type: str, Optional
:param _headers: set to override the headers for a single
request; this effectively ignores the headers
in the spec for a single request.
:type _headers: dict, optional
:param _host_index: set to override the host_index for a single
request; this effectively ignores the host_index
in the spec for a single request.
:type _host_index: int, optional
:return: Returns the result object.
""" # noqa: E501
_param = self._get_individual_column_data_serialize(
dashboard_id=dashboard_id,
widget_id=widget_id,
column_id=column_id,
aid=aid,
window=window,
start_date=start_date,
end_date=end_date,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
_host_index=_host_index
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "ApiMultiMetricColumnData",
'400': "ValidationError",
'401': "UnauthorizedError",
'403': "Error",
'404': "Error",
'429': "Error",
'500': "Error",
}
response_data = self.api_client.call_api(
*_param,
_request_timeout=_request_timeout
)
return response_data.response
def _get_individual_column_data_serialize(
self,
dashboard_id,
widget_id,
column_id,
aid,
window,
start_date,
end_date,
_request_auth,
_content_type,
_headers,
_host_index,
) -> RequestSerialized:
_host = None
_collection_formats: Dict[str, str] = {
}
_path_params: Dict[str, str] = {}
_query_params: List[Tuple[str, str]] = []
_header_params: Dict[str, Optional[str]] = _headers or {}
_form_params: List[Tuple[str, str]] = []
_files: Dict[str, Union[str, bytes]] = {}
_body_params: Optional[bytes] = None
# process the path parameters
if dashboard_id is not None:
_path_params['dashboardId'] = dashboard_id
if widget_id is not None:
_path_params['widgetId'] = widget_id
if column_id is not None:
_path_params['columnId'] = column_id
# process the query parameters
if aid is not None:
_query_params.append(('aid', aid))
if window is not None:
_query_params.append(('window', window))
if start_date is not None:
if isinstance(start_date, datetime):
_query_params.append(
(
'startDate',
start_date.strftime(
self.api_client.configuration.datetime_format
)
)
)
else:
_query_params.append(('startDate', start_date))
if end_date is not None:
if isinstance(end_date, datetime):
_query_params.append(
(
'endDate',
end_date.strftime(
self.api_client.configuration.datetime_format
)
)
)
else:
_query_params.append(('endDate', end_date))
# process the header parameters
# process the form parameters
# process the body parameter
# set the HTTP header `Accept`
_header_params['Accept'] = self.api_client.select_header_accept(
[
'application/hal+json',
'application/json',
'application/problem+json'
]
)
# authentication setting
_auth_settings: List[str] = [
'BearerAuth'
]
return self.api_client.param_serialize(
method='GET',
resource_path='/dashboards/{dashboardId}/widgets/{widgetId}/columns/{columnId}',
path_params=_path_params,
query_params=_query_params,
header_params=_header_params,
body=_body_params,
post_params=_form_params,
files=_files,
auth_settings=_auth_settings,
collection_formats=_collection_formats,
_host=_host,
_request_auth=_request_auth
)
@validate_call @validate_call
def update_dashboard( def update_dashboard(
self, self,

View File

@ -44,6 +44,7 @@ from thousandeyes_sdk.dashboards.models.api_duration import ApiDuration
from thousandeyes_sdk.dashboards.models.api_geo_map_widget import ApiGeoMapWidget from thousandeyes_sdk.dashboards.models.api_geo_map_widget import ApiGeoMapWidget
from thousandeyes_sdk.dashboards.models.api_graphlet_point import ApiGraphletPoint from thousandeyes_sdk.dashboards.models.api_graphlet_point import ApiGraphletPoint
from thousandeyes_sdk.dashboards.models.api_grouped_barchart_widget import ApiGroupedBarchartWidget from thousandeyes_sdk.dashboards.models.api_grouped_barchart_widget import ApiGroupedBarchartWidget
from thousandeyes_sdk.dashboards.models.api_list_widget import ApiListWidget
from thousandeyes_sdk.dashboards.models.api_multi_metric_column import ApiMultiMetricColumn from thousandeyes_sdk.dashboards.models.api_multi_metric_column import ApiMultiMetricColumn
from thousandeyes_sdk.dashboards.models.api_multi_metric_column_data import ApiMultiMetricColumnData from thousandeyes_sdk.dashboards.models.api_multi_metric_column_data import ApiMultiMetricColumnData
from thousandeyes_sdk.dashboards.models.api_multi_metric_table_widget import ApiMultiMetricTableWidget from thousandeyes_sdk.dashboards.models.api_multi_metric_table_widget import ApiMultiMetricTableWidget
@ -102,6 +103,7 @@ from thousandeyes_sdk.dashboards.models.legacy_duration_unit import LegacyDurati
from thousandeyes_sdk.dashboards.models.legacy_widget_sort_direction import LegacyWidgetSortDirection from thousandeyes_sdk.dashboards.models.legacy_widget_sort_direction import LegacyWidgetSortDirection
from thousandeyes_sdk.dashboards.models.legacy_widget_sort_property import LegacyWidgetSortProperty from thousandeyes_sdk.dashboards.models.legacy_widget_sort_property import LegacyWidgetSortProperty
from thousandeyes_sdk.dashboards.models.link import Link from thousandeyes_sdk.dashboards.models.link import Link
from thousandeyes_sdk.dashboards.models.list_datasource import ListDatasource
from thousandeyes_sdk.dashboards.models.metric_group import MetricGroup from thousandeyes_sdk.dashboards.models.metric_group import MetricGroup
from thousandeyes_sdk.dashboards.models.multi_metrics_table_datasource import MultiMetricsTableDatasource from thousandeyes_sdk.dashboards.models.multi_metrics_table_datasource import MultiMetricsTableDatasource
from thousandeyes_sdk.dashboards.models.numbers_card_datasource import NumbersCardDatasource from thousandeyes_sdk.dashboards.models.numbers_card_datasource import NumbersCardDatasource

View File

@ -37,6 +37,7 @@ class AlertListAlertType(str, Enum):
WEB_MINUS_PAGE_MINUS_LOAD = 'web-page-load' WEB_MINUS_PAGE_MINUS_LOAD = 'web-page-load'
WEB_MINUS_TRANSACTION_MINUS_CLASSIC = 'web-transaction-classic' WEB_MINUS_TRANSACTION_MINUS_CLASSIC = 'web-transaction-classic'
WEB_MINUS_TRANSACTION = 'web-transaction' WEB_MINUS_TRANSACTION = 'web-transaction'
API = 'api'
WEB_MINUS_FTP_MINUS_SERVER = 'web-ftp-server' WEB_MINUS_FTP_MINUS_SERVER = 'web-ftp-server'
VOICE_MINUS_SIP_MINUS_SERVER = 'voice-sip-server' VOICE_MINUS_SIP_MINUS_SERVER = 'voice-sip-server'
VOICE_MINUS_RTP_MINUS_STREAM = 'voice-rtp-stream' VOICE_MINUS_RTP_MINUS_STREAM = 'voice-rtp-stream'

View File

@ -34,7 +34,7 @@ from typing_extensions import Self
class ApiAlertListWidget(BaseModel): class ApiAlertListWidget(BaseModel):
""" """
ApiAlertListWidget A widget that displays a list of alerts based on specified criteria, such as alert type and time frame.
""" # noqa: E501 """ # noqa: E501
id: Optional[StrictStr] = Field(default=None, description="Identifier of the widget.") id: Optional[StrictStr] = Field(default=None, description="Identifier of the widget.")
title: Optional[StrictStr] = Field(default=None, description="Title of the widget") title: Optional[StrictStr] = Field(default=None, description="Title of the widget")

View File

@ -62,8 +62,10 @@ class ApiColorGridWidget(BaseModel):
limit: Optional[StrictInt] = Field(default=None, description="Limit configured in the widget.") limit: Optional[StrictInt] = Field(default=None, description="Limit configured in the widget.")
sort_by: Optional[LegacyWidgetSortProperty] = Field(default=None, alias="sortBy") sort_by: Optional[LegacyWidgetSortProperty] = Field(default=None, alias="sortBy")
sort_direction: Optional[LegacyWidgetSortDirection] = Field(default=None, alias="sortDirection") sort_direction: Optional[LegacyWidgetSortDirection] = Field(default=None, alias="sortDirection")
sort_group_by: Optional[LegacyWidgetSortProperty] = Field(default=None, alias="sortGroupBy")
sort_group_direction: Optional[LegacyWidgetSortDirection] = Field(default=None, alias="sortGroupDirection")
data_source: Optional[ColorGridDatasource] = Field(default=None, alias="dataSource") data_source: Optional[ColorGridDatasource] = Field(default=None, alias="dataSource")
__properties: ClassVar[List[str]] = ["id", "title", "visualMode", "embedUrl", "isEmbedded", "metricGroup", "direction", "metric", "filters", "measure", "fixedTimespan", "apiLink", "shouldExcludeAlertSuppressionWindows", "_links", "minScale", "maxScale", "unit", "type", "cards", "groupCardsBy", "columns", "limit", "sortBy", "sortDirection", "dataSource"] __properties: ClassVar[List[str]] = ["id", "title", "visualMode", "embedUrl", "isEmbedded", "metricGroup", "direction", "metric", "filters", "measure", "fixedTimespan", "apiLink", "shouldExcludeAlertSuppressionWindows", "_links", "minScale", "maxScale", "unit", "type", "cards", "groupCardsBy", "columns", "limit", "sortBy", "sortDirection", "sortGroupBy", "sortGroupDirection", "dataSource"]
@field_validator('type') @field_validator('type')
def type_validate_regular_expression(cls, value): def type_validate_regular_expression(cls, value):
@ -163,6 +165,8 @@ class ApiColorGridWidget(BaseModel):
"limit": obj.get("limit"), "limit": obj.get("limit"),
"sortBy": obj.get("sortBy"), "sortBy": obj.get("sortBy"),
"sortDirection": obj.get("sortDirection"), "sortDirection": obj.get("sortDirection"),
"sortGroupBy": obj.get("sortGroupBy"),
"sortGroupDirection": obj.get("sortGroupDirection"),
"dataSource": obj.get("dataSource") "dataSource": obj.get("dataSource")
}) })
return _obj return _obj

View File

@ -0,0 +1,157 @@
# coding: utf-8
"""
Dashboards API
Manage ThousandEyes Dashboards.
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, StrictBool, StrictStr, field_validator
from typing import Any, ClassVar, Dict, List, Optional
from typing_extensions import Annotated
from thousandeyes_sdk.dashboards.models.active_within import ActiveWithin
from thousandeyes_sdk.dashboards.models.api_duration import ApiDuration
from thousandeyes_sdk.dashboards.models.api_widget_measure import ApiWidgetMeasure
from thousandeyes_sdk.dashboards.models.dashboard_metric import DashboardMetric
from thousandeyes_sdk.dashboards.models.dashboard_metric_direction import DashboardMetricDirection
from thousandeyes_sdk.dashboards.models.legacy_widget_sort_direction import LegacyWidgetSortDirection
from thousandeyes_sdk.dashboards.models.list_datasource import ListDatasource
from thousandeyes_sdk.dashboards.models.metric_group import MetricGroup
from thousandeyes_sdk.dashboards.models.self_links import SelfLinks
from thousandeyes_sdk.dashboards.models.visual_mode import VisualMode
from typing import Optional, Set
from typing_extensions import Self
class ApiListWidget(BaseModel):
"""
A widget that displays a list of items, such as events. It can use a time range to limit the items shown.
""" # noqa: E501
id: Optional[StrictStr] = Field(default=None, description="Identifier of the widget.")
title: Optional[StrictStr] = Field(default=None, description="Title of the widget")
visual_mode: Optional[VisualMode] = Field(default=None, alias="visualMode")
embed_url: Optional[StrictStr] = Field(default=None, description="When `isEmbedded` is set to `true`, an `embedUrl` is provided.", alias="embedUrl")
is_embedded: Optional[StrictBool] = Field(default=None, description="Set to `true` if widget is marked as embedded; otherwise, set to `false`.", alias="isEmbedded")
metric_group: Optional[MetricGroup] = Field(default=None, alias="metricGroup")
direction: Optional[DashboardMetricDirection] = None
metric: Optional[DashboardMetric] = None
filters: Optional[Dict[str, List[Any]]] = Field(default=None, description="(Optional) Specifies the filters applied to the widget. When present, the `filters` property displays. Each filter object has two properties: `filterProperty` and `filterValue`. The `filterProperty` can be values like `AGENT`, `ENDPOINT_MACHINE_ID`, `TEST`, `MONITOR`, etc. The `filterValue` represents an identifier array of the selected property.")
measure: Optional[ApiWidgetMeasure] = None
fixed_timespan: Optional[ApiDuration] = Field(default=None, alias="fixedTimespan")
api_link: Optional[StrictStr] = Field(default=None, alias="apiLink")
should_exclude_alert_suppression_windows: Optional[StrictBool] = Field(default=None, description="Excludes alert suppression window data if set to `true`.", alias="shouldExcludeAlertSuppressionWindows")
links: Optional[SelfLinks] = Field(default=None, alias="_links")
type: Annotated[str, Field(strict=True)] = Field(description="List widget type. Currently supports only `List`.")
sort_direction: Optional[LegacyWidgetSortDirection] = Field(default=None, alias="sortDirection")
active_within: Optional[ActiveWithin] = Field(default=None, alias="activeWithin")
data_source: Optional[ListDatasource] = Field(default=None, alias="dataSource")
__properties: ClassVar[List[str]] = ["id", "title", "visualMode", "embedUrl", "isEmbedded", "metricGroup", "direction", "metric", "filters", "measure", "fixedTimespan", "apiLink", "shouldExcludeAlertSuppressionWindows", "_links", "type", "sortDirection", "activeWithin", "dataSource"]
@field_validator('type')
def type_validate_regular_expression(cls, value):
"""Validates the regular expression"""
if not re.match(r"^List$", value):
raise ValueError(r"must validate the regular expression /^List$/")
return value
model_config = ConfigDict(
populate_by_name=True,
validate_assignment=True,
protected_namespaces=(),
extra="allow",
)
def to_str(self) -> str:
"""Returns the string representation of the model using alias"""
return pprint.pformat(self.model_dump(by_alias=True))
def to_json(self) -> str:
"""Returns the JSON representation of the model using alias"""
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
return self.model_dump_json(by_alias=True, exclude_unset=True, exclude_none=True)
@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of ApiListWidget 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.
* OpenAPI `readOnly` fields are excluded.
* OpenAPI `readOnly` fields are excluded.
* OpenAPI `readOnly` fields are excluded.
"""
excluded_fields: Set[str] = set([
"id",
"embed_url",
"api_link",
])
_dict = self.model_dump(
by_alias=True,
exclude=excluded_fields,
exclude_none=True,
)
# override the default output from pydantic by calling `to_dict()` of measure
if self.measure:
_dict['measure'] = self.measure.to_dict()
# override the default output from pydantic by calling `to_dict()` of fixed_timespan
if self.fixed_timespan:
_dict['fixedTimespan'] = self.fixed_timespan.to_dict()
# override the default output from pydantic by calling `to_dict()` of links
if self.links:
_dict['_links'] = self.links.to_dict()
# override the default output from pydantic by calling `to_dict()` of active_within
if self.active_within:
_dict['activeWithin'] = self.active_within.to_dict()
return _dict
@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of ApiListWidget from a dict"""
if obj is None:
return None
if not isinstance(obj, dict):
return cls.model_validate(obj)
_obj = cls.model_validate({
"id": obj.get("id"),
"title": obj.get("title"),
"visualMode": obj.get("visualMode"),
"embedUrl": obj.get("embedUrl"),
"isEmbedded": obj.get("isEmbedded"),
"metricGroup": obj.get("metricGroup"),
"direction": obj.get("direction"),
"metric": obj.get("metric"),
"filters": obj.get("filters"),
"measure": ApiWidgetMeasure.from_dict(obj["measure"]) if obj.get("measure") is not None else None,
"fixedTimespan": ApiDuration.from_dict(obj["fixedTimespan"]) if obj.get("fixedTimespan") is not None else None,
"apiLink": obj.get("apiLink"),
"shouldExcludeAlertSuppressionWindows": obj.get("shouldExcludeAlertSuppressionWindows"),
"_links": SelfLinks.from_dict(obj["_links"]) if obj.get("_links") is not None else None,
"type": obj.get("type"),
"sortDirection": obj.get("sortDirection"),
"activeWithin": ActiveWithin.from_dict(obj["activeWithin"]) if obj.get("activeWithin") is not None else None,
"dataSource": obj.get("dataSource")
})
return _obj

View File

@ -23,6 +23,7 @@ from thousandeyes_sdk.dashboards.models.dashboard_metric import DashboardMetric
from thousandeyes_sdk.dashboards.models.dashboard_metric_direction import DashboardMetricDirection from thousandeyes_sdk.dashboards.models.dashboard_metric_direction import DashboardMetricDirection
from thousandeyes_sdk.dashboards.models.metric_group import MetricGroup from thousandeyes_sdk.dashboards.models.metric_group import MetricGroup
from thousandeyes_sdk.dashboards.models.multi_metrics_table_datasource import MultiMetricsTableDatasource from thousandeyes_sdk.dashboards.models.multi_metrics_table_datasource import MultiMetricsTableDatasource
from thousandeyes_sdk.dashboards.models.self_links import SelfLinks
from typing import Optional, Set from typing import Optional, Set
from typing_extensions import Self from typing_extensions import Self
@ -37,7 +38,8 @@ class ApiMultiMetricColumn(BaseModel):
metric: Optional[DashboardMetric] = None metric: Optional[DashboardMetric] = None
filters: Optional[Dict[str, List[Any]]] = Field(default=None, description="(Optional) Specifies the filters applied to the widget. When present, the `filters` property displays. Each filter object has two properties: `filterProperty` and `filterValue`. The `filterProperty` can be values like `AGENT`, `ENDPOINT_MACHINE_ID`, `TEST`, `MONITOR`, etc. The `filterValue` represents an identifier array of the selected property.") filters: Optional[Dict[str, List[Any]]] = Field(default=None, description="(Optional) Specifies the filters applied to the widget. When present, the `filters` property displays. Each filter object has two properties: `filterProperty` and `filterValue`. The `filterProperty` can be values like `AGENT`, `ENDPOINT_MACHINE_ID`, `TEST`, `MONITOR`, etc. The `filterValue` represents an identifier array of the selected property.")
measure: Optional[ApiWidgetMeasure] = None measure: Optional[ApiWidgetMeasure] = None
__properties: ClassVar[List[str]] = ["id", "dataSource", "metricGroup", "direction", "metric", "filters", "measure"] links: Optional[SelfLinks] = Field(default=None, alias="_links")
__properties: ClassVar[List[str]] = ["id", "dataSource", "metricGroup", "direction", "metric", "filters", "measure", "_links"]
model_config = ConfigDict( model_config = ConfigDict(
populate_by_name=True, populate_by_name=True,
@ -82,6 +84,9 @@ class ApiMultiMetricColumn(BaseModel):
# override the default output from pydantic by calling `to_dict()` of measure # override the default output from pydantic by calling `to_dict()` of measure
if self.measure: if self.measure:
_dict['measure'] = self.measure.to_dict() _dict['measure'] = self.measure.to_dict()
# override the default output from pydantic by calling `to_dict()` of links
if self.links:
_dict['_links'] = self.links.to_dict()
return _dict return _dict
@classmethod @classmethod
@ -100,7 +105,8 @@ class ApiMultiMetricColumn(BaseModel):
"direction": obj.get("direction"), "direction": obj.get("direction"),
"metric": obj.get("metric"), "metric": obj.get("metric"),
"filters": obj.get("filters"), "filters": obj.get("filters"),
"measure": ApiWidgetMeasure.from_dict(obj["measure"]) if obj.get("measure") is not None else None "measure": ApiWidgetMeasure.from_dict(obj["measure"]) if obj.get("measure") is not None else None,
"_links": SelfLinks.from_dict(obj["_links"]) if obj.get("_links") is not None else None
}) })
return _obj return _obj

View File

@ -20,6 +20,7 @@ from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.dashboards.models.api_dashboard_asw import ApiDashboardAsw from thousandeyes_sdk.dashboards.models.api_dashboard_asw import ApiDashboardAsw
from thousandeyes_sdk.dashboards.models.api_widget_data_point import ApiWidgetDataPoint from thousandeyes_sdk.dashboards.models.api_widget_data_point import ApiWidgetDataPoint
from thousandeyes_sdk.dashboards.models.self_links import SelfLinks
from typing import Optional, Set from typing import Optional, Set
from typing_extensions import Self from typing_extensions import Self
@ -32,7 +33,8 @@ class ApiMultiMetricColumnData(BaseModel):
points: Optional[List[ApiWidgetDataPoint]] = None points: Optional[List[ApiWidgetDataPoint]] = None
status: Optional[StrictStr] = Field(default=None, description="Message for not fully configured card or no data.") status: Optional[StrictStr] = Field(default=None, description="Message for not fully configured card or no data.")
alert_suppression_windows: Optional[List[ApiDashboardAsw]] = Field(default=None, alias="alertSuppressionWindows") alert_suppression_windows: Optional[List[ApiDashboardAsw]] = Field(default=None, alias="alertSuppressionWindows")
__properties: ClassVar[List[str]] = ["columnId", "binSize", "points", "status", "alertSuppressionWindows"] links: Optional[SelfLinks] = Field(default=None, alias="_links")
__properties: ClassVar[List[str]] = ["columnId", "binSize", "points", "status", "alertSuppressionWindows", "_links"]
model_config = ConfigDict( model_config = ConfigDict(
populate_by_name=True, populate_by_name=True,
@ -88,6 +90,9 @@ class ApiMultiMetricColumnData(BaseModel):
if _item: if _item:
_items.append(_item.to_dict()) _items.append(_item.to_dict())
_dict['alertSuppressionWindows'] = _items _dict['alertSuppressionWindows'] = _items
# override the default output from pydantic by calling `to_dict()` of links
if self.links:
_dict['_links'] = self.links.to_dict()
return _dict return _dict
@classmethod @classmethod
@ -104,7 +109,8 @@ class ApiMultiMetricColumnData(BaseModel):
"binSize": obj.get("binSize"), "binSize": obj.get("binSize"),
"points": [ApiWidgetDataPoint.from_dict(_item) for _item in obj["points"]] if obj.get("points") is not None else None, "points": [ApiWidgetDataPoint.from_dict(_item) for _item in obj["points"]] if obj.get("points") is not None else None,
"status": obj.get("status"), "status": obj.get("status"),
"alertSuppressionWindows": [ApiDashboardAsw.from_dict(_item) for _item in obj["alertSuppressionWindows"]] if obj.get("alertSuppressionWindows") is not None else None "alertSuppressionWindows": [ApiDashboardAsw.from_dict(_item) for _item in obj["alertSuppressionWindows"]] if obj.get("alertSuppressionWindows") is not None else None,
"_links": SelfLinks.from_dict(obj["_links"]) if obj.get("_links") is not None else None
}) })
return _obj return _obj

View File

@ -25,6 +25,7 @@ from thousandeyes_sdk.dashboards.models.dashboard_metric import DashboardMetric
from thousandeyes_sdk.dashboards.models.dashboard_metric_direction import DashboardMetricDirection from thousandeyes_sdk.dashboards.models.dashboard_metric_direction import DashboardMetricDirection
from thousandeyes_sdk.dashboards.models.metric_group import MetricGroup from thousandeyes_sdk.dashboards.models.metric_group import MetricGroup
from thousandeyes_sdk.dashboards.models.numbers_card_datasource import NumbersCardDatasource from thousandeyes_sdk.dashboards.models.numbers_card_datasource import NumbersCardDatasource
from thousandeyes_sdk.dashboards.models.self_links import SelfLinks
from typing import Optional, Set from typing import Optional, Set
from typing_extensions import Self from typing_extensions import Self
@ -46,7 +47,8 @@ class ApiNumbersCard(BaseModel):
direction: Optional[DashboardMetricDirection] = None direction: Optional[DashboardMetricDirection] = None
metric: Optional[DashboardMetric] = None metric: Optional[DashboardMetric] = None
filters: Optional[Dict[str, List[Any]]] = Field(default=None, description="(Optional) Specifies the filters applied to the widget. When present, the `filters` property displays. Each filter object has two properties: `filterProperty` and `filterValue`. The `filterProperty` can be values like `AGENT`, `ENDPOINT_MACHINE_ID`, `TEST`, `MONITOR`, etc. The `filterValue` represents an identifier array of the selected property.") filters: Optional[Dict[str, List[Any]]] = Field(default=None, description="(Optional) Specifies the filters applied to the widget. When present, the `filters` property displays. Each filter object has two properties: `filterProperty` and `filterValue`. The `filterProperty` can be values like `AGENT`, `ENDPOINT_MACHINE_ID`, `TEST`, `MONITOR`, etc. The `filterValue` represents an identifier array of the selected property.")
__properties: ClassVar[List[str]] = ["minScale", "maxScale", "unit", "id", "description", "measure", "compareToPreviousValue", "fixedTimespan", "shouldExcludeAlertSuppressionWindows", "dataSource", "metricGroup", "direction", "metric", "filters"] links: Optional[SelfLinks] = Field(default=None, alias="_links")
__properties: ClassVar[List[str]] = ["minScale", "maxScale", "unit", "id", "description", "measure", "compareToPreviousValue", "fixedTimespan", "shouldExcludeAlertSuppressionWindows", "dataSource", "metricGroup", "direction", "metric", "filters", "_links"]
model_config = ConfigDict( model_config = ConfigDict(
populate_by_name=True, populate_by_name=True,
@ -94,6 +96,9 @@ class ApiNumbersCard(BaseModel):
# override the default output from pydantic by calling `to_dict()` of fixed_timespan # override the default output from pydantic by calling `to_dict()` of fixed_timespan
if self.fixed_timespan: if self.fixed_timespan:
_dict['fixedTimespan'] = self.fixed_timespan.to_dict() _dict['fixedTimespan'] = self.fixed_timespan.to_dict()
# override the default output from pydantic by calling `to_dict()` of links
if self.links:
_dict['_links'] = self.links.to_dict()
return _dict return _dict
@classmethod @classmethod
@ -119,7 +124,8 @@ class ApiNumbersCard(BaseModel):
"metricGroup": obj.get("metricGroup"), "metricGroup": obj.get("metricGroup"),
"direction": obj.get("direction"), "direction": obj.get("direction"),
"metric": obj.get("metric"), "metric": obj.get("metric"),
"filters": obj.get("filters") "filters": obj.get("filters"),
"_links": SelfLinks.from_dict(obj["_links"]) if obj.get("_links") is not None else None
}) })
return _obj return _obj

View File

@ -20,6 +20,7 @@ from datetime import datetime
from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional, Union from typing import Any, ClassVar, Dict, List, Optional, Union
from thousandeyes_sdk.dashboards.models.api_dashboard_asw import ApiDashboardAsw from thousandeyes_sdk.dashboards.models.api_dashboard_asw import ApiDashboardAsw
from thousandeyes_sdk.dashboards.models.self_links import SelfLinks
from typing import Optional, Set from typing import Optional, Set
from typing_extensions import Self from typing_extensions import Self
@ -37,7 +38,8 @@ class ApiNumbersCardData(BaseModel):
value: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Aggregated value.") value: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Aggregated value.")
status: Optional[StrictStr] = Field(default=None, description="Message for not fully configured card or no data.") status: Optional[StrictStr] = Field(default=None, description="Message for not fully configured card or no data.")
alert_suppression_windows: Optional[List[ApiDashboardAsw]] = Field(default=None, alias="alertSuppressionWindows") alert_suppression_windows: Optional[List[ApiDashboardAsw]] = Field(default=None, alias="alertSuppressionWindows")
__properties: ClassVar[List[str]] = ["cardId", "startDate", "endDate", "previousValue", "binSize", "timestamp", "numberOfDataPoints", "value", "status", "alertSuppressionWindows"] links: Optional[SelfLinks] = Field(default=None, alias="_links")
__properties: ClassVar[List[str]] = ["cardId", "startDate", "endDate", "previousValue", "binSize", "timestamp", "numberOfDataPoints", "value", "status", "alertSuppressionWindows", "_links"]
model_config = ConfigDict( model_config = ConfigDict(
populate_by_name=True, populate_by_name=True,
@ -86,6 +88,9 @@ class ApiNumbersCardData(BaseModel):
if _item: if _item:
_items.append(_item.to_dict()) _items.append(_item.to_dict())
_dict['alertSuppressionWindows'] = _items _dict['alertSuppressionWindows'] = _items
# override the default output from pydantic by calling `to_dict()` of links
if self.links:
_dict['_links'] = self.links.to_dict()
return _dict return _dict
@classmethod @classmethod
@ -107,7 +112,8 @@ class ApiNumbersCardData(BaseModel):
"numberOfDataPoints": obj.get("numberOfDataPoints"), "numberOfDataPoints": obj.get("numberOfDataPoints"),
"value": obj.get("value"), "value": obj.get("value"),
"status": obj.get("status"), "status": obj.get("status"),
"alertSuppressionWindows": [ApiDashboardAsw.from_dict(_item) for _item in obj["alertSuppressionWindows"]] if obj.get("alertSuppressionWindows") is not None else None "alertSuppressionWindows": [ApiDashboardAsw.from_dict(_item) for _item in obj["alertSuppressionWindows"]] if obj.get("alertSuppressionWindows") is not None else None,
"_links": SelfLinks.from_dict(obj["_links"]) if obj.get("_links") is not None else None
}) })
return _obj return _obj

View File

@ -22,6 +22,7 @@ from thousandeyes_sdk.dashboards.models.api_box_and_whiskers_widget import ApiBo
from thousandeyes_sdk.dashboards.models.api_color_grid_widget import ApiColorGridWidget from thousandeyes_sdk.dashboards.models.api_color_grid_widget import ApiColorGridWidget
from thousandeyes_sdk.dashboards.models.api_geo_map_widget import ApiGeoMapWidget from thousandeyes_sdk.dashboards.models.api_geo_map_widget import ApiGeoMapWidget
from thousandeyes_sdk.dashboards.models.api_grouped_barchart_widget import ApiGroupedBarchartWidget from thousandeyes_sdk.dashboards.models.api_grouped_barchart_widget import ApiGroupedBarchartWidget
from thousandeyes_sdk.dashboards.models.api_list_widget import ApiListWidget
from thousandeyes_sdk.dashboards.models.api_multi_metric_table_widget import ApiMultiMetricTableWidget from thousandeyes_sdk.dashboards.models.api_multi_metric_table_widget import ApiMultiMetricTableWidget
from thousandeyes_sdk.dashboards.models.api_numbers_card_widget import ApiNumbersCardWidget from thousandeyes_sdk.dashboards.models.api_numbers_card_widget import ApiNumbersCardWidget
from thousandeyes_sdk.dashboards.models.api_pie_chart_widget import ApiPieChartWidget from thousandeyes_sdk.dashboards.models.api_pie_chart_widget import ApiPieChartWidget
@ -34,7 +35,7 @@ from pydantic import StrictStr, Field, model_serializer
from typing import Union, List, Set, Optional, Dict from typing import Union, List, Set, Optional, Dict
from typing_extensions import Literal, Self from typing_extensions import Literal, Self
APIWIDGET_ONE_OF_SCHEMAS = ["ApiAgentStatusWidget", "ApiAlertListWidget", "ApiBoxAndWhiskersWidget", "ApiColorGridWidget", "ApiGeoMapWidget", "ApiGroupedBarchartWidget", "ApiMultiMetricTableWidget", "ApiNumbersCardWidget", "ApiPieChartWidget", "ApiStackedAreaChartWidget", "ApiStackedBarchartWidget", "ApiTableWidget", "ApiTestTableWidget", "ApiTimeseriesWidget"] APIWIDGET_ONE_OF_SCHEMAS = ["ApiAgentStatusWidget", "ApiAlertListWidget", "ApiBoxAndWhiskersWidget", "ApiColorGridWidget", "ApiGeoMapWidget", "ApiGroupedBarchartWidget", "ApiListWidget", "ApiMultiMetricTableWidget", "ApiNumbersCardWidget", "ApiPieChartWidget", "ApiStackedAreaChartWidget", "ApiStackedBarchartWidget", "ApiTableWidget", "ApiTestTableWidget", "ApiTimeseriesWidget"]
class ApiWidget(BaseModel): class ApiWidget(BaseModel):
""" """
@ -52,24 +53,26 @@ class ApiWidget(BaseModel):
oneof_schema_5_validator: Optional[ApiGeoMapWidget] = None oneof_schema_5_validator: Optional[ApiGeoMapWidget] = None
# data type: ApiGroupedBarchartWidget # data type: ApiGroupedBarchartWidget
oneof_schema_6_validator: Optional[ApiGroupedBarchartWidget] = None oneof_schema_6_validator: Optional[ApiGroupedBarchartWidget] = None
# data type: ApiListWidget
oneof_schema_7_validator: Optional[ApiListWidget] = None
# data type: ApiMultiMetricTableWidget # data type: ApiMultiMetricTableWidget
oneof_schema_7_validator: Optional[ApiMultiMetricTableWidget] = None oneof_schema_8_validator: Optional[ApiMultiMetricTableWidget] = None
# data type: ApiNumbersCardWidget # data type: ApiNumbersCardWidget
oneof_schema_8_validator: Optional[ApiNumbersCardWidget] = None oneof_schema_9_validator: Optional[ApiNumbersCardWidget] = None
# data type: ApiPieChartWidget # data type: ApiPieChartWidget
oneof_schema_9_validator: Optional[ApiPieChartWidget] = None oneof_schema_10_validator: Optional[ApiPieChartWidget] = None
# data type: ApiStackedAreaChartWidget # data type: ApiStackedAreaChartWidget
oneof_schema_10_validator: Optional[ApiStackedAreaChartWidget] = None oneof_schema_11_validator: Optional[ApiStackedAreaChartWidget] = None
# data type: ApiStackedBarchartWidget # data type: ApiStackedBarchartWidget
oneof_schema_11_validator: Optional[ApiStackedBarchartWidget] = None oneof_schema_12_validator: Optional[ApiStackedBarchartWidget] = None
# data type: ApiTableWidget # data type: ApiTableWidget
oneof_schema_12_validator: Optional[ApiTableWidget] = None oneof_schema_13_validator: Optional[ApiTableWidget] = None
# data type: ApiTestTableWidget # data type: ApiTestTableWidget
oneof_schema_13_validator: Optional[ApiTestTableWidget] = None oneof_schema_14_validator: Optional[ApiTestTableWidget] = None
# data type: ApiTimeseriesWidget # data type: ApiTimeseriesWidget
oneof_schema_14_validator: Optional[ApiTimeseriesWidget] = None oneof_schema_15_validator: Optional[ApiTimeseriesWidget] = None
actual_instance: Optional[Union[ApiAgentStatusWidget, ApiAlertListWidget, ApiBoxAndWhiskersWidget, ApiColorGridWidget, ApiGeoMapWidget, ApiGroupedBarchartWidget, ApiMultiMetricTableWidget, ApiNumbersCardWidget, ApiPieChartWidget, ApiStackedAreaChartWidget, ApiStackedBarchartWidget, ApiTableWidget, ApiTestTableWidget, ApiTimeseriesWidget]] = None actual_instance: Optional[Union[ApiAgentStatusWidget, ApiAlertListWidget, ApiBoxAndWhiskersWidget, ApiColorGridWidget, ApiGeoMapWidget, ApiGroupedBarchartWidget, ApiListWidget, ApiMultiMetricTableWidget, ApiNumbersCardWidget, ApiPieChartWidget, ApiStackedAreaChartWidget, ApiStackedBarchartWidget, ApiTableWidget, ApiTestTableWidget, ApiTimeseriesWidget]] = None
one_of_schemas: Set[str] = { "ApiAgentStatusWidget", "ApiAlertListWidget", "ApiBoxAndWhiskersWidget", "ApiColorGridWidget", "ApiGeoMapWidget", "ApiGroupedBarchartWidget", "ApiMultiMetricTableWidget", "ApiNumbersCardWidget", "ApiPieChartWidget", "ApiStackedAreaChartWidget", "ApiStackedBarchartWidget", "ApiTableWidget", "ApiTestTableWidget", "ApiTimeseriesWidget" } one_of_schemas: Set[str] = { "ApiAgentStatusWidget", "ApiAlertListWidget", "ApiBoxAndWhiskersWidget", "ApiColorGridWidget", "ApiGeoMapWidget", "ApiGroupedBarchartWidget", "ApiListWidget", "ApiMultiMetricTableWidget", "ApiNumbersCardWidget", "ApiPieChartWidget", "ApiStackedAreaChartWidget", "ApiStackedBarchartWidget", "ApiTableWidget", "ApiTestTableWidget", "ApiTimeseriesWidget" }
model_config = ConfigDict( model_config = ConfigDict(
validate_assignment=True, validate_assignment=True,
@ -125,6 +128,11 @@ class ApiWidget(BaseModel):
error_messages.append(f"Error! Input type `{type(v)}` is not `ApiGroupedBarchartWidget`") error_messages.append(f"Error! Input type `{type(v)}` is not `ApiGroupedBarchartWidget`")
else: else:
match += 1 match += 1
# validate data type: ApiListWidget
if not isinstance(v, ApiListWidget):
error_messages.append(f"Error! Input type `{type(v)}` is not `ApiListWidget`")
else:
match += 1
# validate data type: ApiMultiMetricTableWidget # validate data type: ApiMultiMetricTableWidget
if not isinstance(v, ApiMultiMetricTableWidget): if not isinstance(v, ApiMultiMetricTableWidget):
error_messages.append(f"Error! Input type `{type(v)}` is not `ApiMultiMetricTableWidget`") error_messages.append(f"Error! Input type `{type(v)}` is not `ApiMultiMetricTableWidget`")
@ -167,10 +175,10 @@ class ApiWidget(BaseModel):
match += 1 match += 1
if match > 1: if match > 1:
# more than 1 match # more than 1 match
raise ValueError("Multiple matches found when setting `actual_instance` in ApiWidget with oneOf schemas: ApiAgentStatusWidget, ApiAlertListWidget, ApiBoxAndWhiskersWidget, ApiColorGridWidget, ApiGeoMapWidget, ApiGroupedBarchartWidget, ApiMultiMetricTableWidget, ApiNumbersCardWidget, ApiPieChartWidget, ApiStackedAreaChartWidget, ApiStackedBarchartWidget, ApiTableWidget, ApiTestTableWidget, ApiTimeseriesWidget. Details: " + ", ".join(error_messages)) raise ValueError("Multiple matches found when setting `actual_instance` in ApiWidget with oneOf schemas: ApiAgentStatusWidget, ApiAlertListWidget, ApiBoxAndWhiskersWidget, ApiColorGridWidget, ApiGeoMapWidget, ApiGroupedBarchartWidget, ApiListWidget, ApiMultiMetricTableWidget, ApiNumbersCardWidget, ApiPieChartWidget, ApiStackedAreaChartWidget, ApiStackedBarchartWidget, ApiTableWidget, ApiTestTableWidget, ApiTimeseriesWidget. Details: " + ", ".join(error_messages))
elif match == 0: elif match == 0:
# no match # no match
raise ValueError("No match found when setting `actual_instance` in ApiWidget with oneOf schemas: ApiAgentStatusWidget, ApiAlertListWidget, ApiBoxAndWhiskersWidget, ApiColorGridWidget, ApiGeoMapWidget, ApiGroupedBarchartWidget, ApiMultiMetricTableWidget, ApiNumbersCardWidget, ApiPieChartWidget, ApiStackedAreaChartWidget, ApiStackedBarchartWidget, ApiTableWidget, ApiTestTableWidget, ApiTimeseriesWidget. Details: " + ", ".join(error_messages)) raise ValueError("No match found when setting `actual_instance` in ApiWidget with oneOf schemas: ApiAgentStatusWidget, ApiAlertListWidget, ApiBoxAndWhiskersWidget, ApiColorGridWidget, ApiGeoMapWidget, ApiGroupedBarchartWidget, ApiListWidget, ApiMultiMetricTableWidget, ApiNumbersCardWidget, ApiPieChartWidget, ApiStackedAreaChartWidget, ApiStackedBarchartWidget, ApiTableWidget, ApiTestTableWidget, ApiTimeseriesWidget. Details: " + ", ".join(error_messages))
else: else:
return v return v
@ -221,6 +229,12 @@ class ApiWidget(BaseModel):
match += 1 match += 1
except (ValidationError, ValueError) as e: except (ValidationError, ValueError) as e:
error_messages.append(str(e)) error_messages.append(str(e))
# deserialize data into ApiListWidget
try:
instance.actual_instance = ApiListWidget.from_json(json_str)
match += 1
except (ValidationError, ValueError) as e:
error_messages.append(str(e))
# deserialize data into ApiMultiMetricTableWidget # deserialize data into ApiMultiMetricTableWidget
try: try:
instance.actual_instance = ApiMultiMetricTableWidget.from_json(json_str) instance.actual_instance = ApiMultiMetricTableWidget.from_json(json_str)
@ -272,10 +286,10 @@ class ApiWidget(BaseModel):
if match > 1: if match > 1:
# more than 1 match # more than 1 match
raise ValueError("Multiple matches found when deserializing the JSON string into ApiWidget with oneOf schemas: ApiAgentStatusWidget, ApiAlertListWidget, ApiBoxAndWhiskersWidget, ApiColorGridWidget, ApiGeoMapWidget, ApiGroupedBarchartWidget, ApiMultiMetricTableWidget, ApiNumbersCardWidget, ApiPieChartWidget, ApiStackedAreaChartWidget, ApiStackedBarchartWidget, ApiTableWidget, ApiTestTableWidget, ApiTimeseriesWidget. Details: " + ", ".join(error_messages)) raise ValueError("Multiple matches found when deserializing the JSON string into ApiWidget with oneOf schemas: ApiAgentStatusWidget, ApiAlertListWidget, ApiBoxAndWhiskersWidget, ApiColorGridWidget, ApiGeoMapWidget, ApiGroupedBarchartWidget, ApiListWidget, ApiMultiMetricTableWidget, ApiNumbersCardWidget, ApiPieChartWidget, ApiStackedAreaChartWidget, ApiStackedBarchartWidget, ApiTableWidget, ApiTestTableWidget, ApiTimeseriesWidget. Details: " + ", ".join(error_messages))
elif match == 0: elif match == 0:
# no match # no match
raise ValueError("No match found when deserializing the JSON string into ApiWidget with oneOf schemas: ApiAgentStatusWidget, ApiAlertListWidget, ApiBoxAndWhiskersWidget, ApiColorGridWidget, ApiGeoMapWidget, ApiGroupedBarchartWidget, ApiMultiMetricTableWidget, ApiNumbersCardWidget, ApiPieChartWidget, ApiStackedAreaChartWidget, ApiStackedBarchartWidget, ApiTableWidget, ApiTestTableWidget, ApiTimeseriesWidget. Details: " + ", ".join(error_messages)) raise ValueError("No match found when deserializing the JSON string into ApiWidget with oneOf schemas: ApiAgentStatusWidget, ApiAlertListWidget, ApiBoxAndWhiskersWidget, ApiColorGridWidget, ApiGeoMapWidget, ApiGroupedBarchartWidget, ApiListWidget, ApiMultiMetricTableWidget, ApiNumbersCardWidget, ApiPieChartWidget, ApiStackedAreaChartWidget, ApiStackedBarchartWidget, ApiTableWidget, ApiTestTableWidget, ApiTimeseriesWidget. Details: " + ", ".join(error_messages))
else: else:
return instance return instance
@ -293,7 +307,7 @@ class ApiWidget(BaseModel):
else: else:
return json.dumps(self.actual_instance) return json.dumps(self.actual_instance)
def to_dict(self) -> Optional[Union[Dict[str, Any], ApiAgentStatusWidget, ApiAlertListWidget, ApiBoxAndWhiskersWidget, ApiColorGridWidget, ApiGeoMapWidget, ApiGroupedBarchartWidget, ApiMultiMetricTableWidget, ApiNumbersCardWidget, ApiPieChartWidget, ApiStackedAreaChartWidget, ApiStackedBarchartWidget, ApiTableWidget, ApiTestTableWidget, ApiTimeseriesWidget]]: def to_dict(self) -> Optional[Union[Dict[str, Any], ApiAgentStatusWidget, ApiAlertListWidget, ApiBoxAndWhiskersWidget, ApiColorGridWidget, ApiGeoMapWidget, ApiGroupedBarchartWidget, ApiListWidget, ApiMultiMetricTableWidget, ApiNumbersCardWidget, ApiPieChartWidget, ApiStackedAreaChartWidget, ApiStackedBarchartWidget, ApiTableWidget, ApiTestTableWidget, ApiTimeseriesWidget]]:
"""Returns the dict representation of the actual instance""" """Returns the dict representation of the actual instance"""
if self.actual_instance is None: if self.actual_instance is None:
return None return None

View File

@ -37,6 +37,7 @@ class LegacyAlertListAlertType(str, Enum):
WEB_MINUS__PAGE_LOAD = 'Web - Page Load' WEB_MINUS__PAGE_LOAD = 'Web - Page Load'
WEB_MINUS__TRANSACTION_LEFT_PARENTHESIS_CLASSIC_RIGHT_PARENTHESIS = 'Web - Transaction (Classic)' WEB_MINUS__TRANSACTION_LEFT_PARENTHESIS_CLASSIC_RIGHT_PARENTHESIS = 'Web - Transaction (Classic)'
WEB_MINUS__TRANSACTION = 'Web - Transaction' WEB_MINUS__TRANSACTION = 'Web - Transaction'
API = 'API'
WEB_MINUS__FTP_SERVER = 'Web - FTP Server' WEB_MINUS__FTP_SERVER = 'Web - FTP Server'
VOICE_MINUS__SIP_SERVER = 'Voice - SIP Server' VOICE_MINUS__SIP_SERVER = 'Voice - SIP Server'
VOICE_MINUS__RTP_STREAM = 'Voice - RTP Stream' VOICE_MINUS__RTP_STREAM = 'Voice - RTP Stream'

View File

@ -1,9 +1,9 @@
# coding: utf-8 # coding: utf-8
""" """
Endpoint Test Results API Dashboards API
Retrieve results for scheduled and dynamic tests on endpoint agents. Manage ThousandEyes Dashboards.
Generated by OpenAPI Generator (https://openapi-generator.tech) Generated by OpenAPI Generator (https://openapi-generator.tech)
@ -17,23 +17,20 @@ from enum import Enum
from typing_extensions import Self from typing_extensions import Self
class EndpointIpVersionTemplate(str, Enum): class ListDatasource(str, Enum):
""" """
IP version the test should use for network tests. Data source for the list widget.
""" """
""" """
allowed enum values allowed enum values
""" """
V4_ONLY = 'V4_ONLY' EVENT_DETECTION = 'EVENT_DETECTION'
V6_ONLY = 'V6_ONLY'
V6_PREFER = 'V6_PREFER'
OS_DEFAULT = 'OS_DEFAULT'
UNKNOWN = 'unknown' UNKNOWN = 'unknown'
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Self:
"""Create an instance of EndpointIpVersionTemplate from a JSON string""" """Create an instance of ListDatasource from a JSON string"""
return cls(json.loads(json_str)) return cls(json.loads(json_str))
@classmethod @classmethod

View File

@ -36,6 +36,7 @@ class WidgetType(str, Enum):
AGENT_STATUS = 'Agent Status' AGENT_STATUS = 'Agent Status'
COLOR_GRID = 'Color Grid' COLOR_GRID = 'Color Grid'
ALERT_LIST = 'Alert List' ALERT_LIST = 'Alert List'
LIST = 'List'
TEST_TABLE = 'Test Table' TEST_TABLE = 'Test Table'
MAP = 'Map' MAP = 'Map'
BOX_AND_WHISKERS = 'Box and Whiskers' BOX_AND_WHISKERS = 'Box and Whiskers'

View File

@ -386,6 +386,18 @@ class TestDashboardSnapshotsApi(unittest.TestCase):
"cards" : [ { "cards" : [ {
"numberOfDataPoints" : 24192, "numberOfDataPoints" : 24192,
"endDate" : "2023-05-16T10:14:28Z", "endDate" : "2023-05-16T10:14:28Z",
"_links" : {
"self" : {
"hreflang" : "hreflang",
"templated" : true,
"profile" : "profile",
"name" : "name",
"href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
"type" : "type",
"deprecation" : "deprecation",
"title" : "title"
}
},
"cardId" : "lrxxr", "cardId" : "lrxxr",
"alertSuppressionWindows" : [ { "alertSuppressionWindows" : [ {
"testIds" : [ "281474976710661" ], "testIds" : [ "281474976710661" ],
@ -415,6 +427,18 @@ class TestDashboardSnapshotsApi(unittest.TestCase):
}, { }, {
"numberOfDataPoints" : 24192, "numberOfDataPoints" : 24192,
"endDate" : "2023-05-16T10:14:28Z", "endDate" : "2023-05-16T10:14:28Z",
"_links" : {
"self" : {
"hreflang" : "hreflang",
"templated" : true,
"profile" : "profile",
"name" : "name",
"href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
"type" : "type",
"deprecation" : "deprecation",
"title" : "title"
}
},
"cardId" : "lrxxr", "cardId" : "lrxxr",
"alertSuppressionWindows" : [ { "alertSuppressionWindows" : [ {
"testIds" : [ "281474976710661" ], "testIds" : [ "281474976710661" ],
@ -500,6 +524,18 @@ class TestDashboardSnapshotsApi(unittest.TestCase):
"target" : "www.google.com" "target" : "www.google.com"
} ], } ],
"columns" : [ { "columns" : [ {
"_links" : {
"self" : {
"hreflang" : "hreflang",
"templated" : true,
"profile" : "profile",
"name" : "name",
"href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
"type" : "type",
"deprecation" : "deprecation",
"title" : "title"
}
},
"columnId" : "938to", "columnId" : "938to",
"alertSuppressionWindows" : [ { "alertSuppressionWindows" : [ {
"testIds" : [ "281474976710661" ], "testIds" : [ "281474976710661" ],
@ -546,6 +582,18 @@ class TestDashboardSnapshotsApi(unittest.TestCase):
} ], } ],
"status" : "No data" "status" : "No data"
}, { }, {
"_links" : {
"self" : {
"hreflang" : "hreflang",
"templated" : true,
"profile" : "profile",
"name" : "name",
"href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
"type" : "type",
"deprecation" : "deprecation",
"title" : "title"
}
},
"columnId" : "938to", "columnId" : "938to",
"alertSuppressionWindows" : [ { "alertSuppressionWindows" : [ {
"testIds" : [ "281474976710661" ], "testIds" : [ "281474976710661" ],

View File

@ -484,6 +484,18 @@ class TestDashboardsApi(unittest.TestCase):
"cards" : [ { "cards" : [ {
"numberOfDataPoints" : 24192, "numberOfDataPoints" : 24192,
"endDate" : "2023-05-16T10:14:28Z", "endDate" : "2023-05-16T10:14:28Z",
"_links" : {
"self" : {
"hreflang" : "hreflang",
"templated" : true,
"profile" : "profile",
"name" : "name",
"href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
"type" : "type",
"deprecation" : "deprecation",
"title" : "title"
}
},
"cardId" : "lrxxr", "cardId" : "lrxxr",
"alertSuppressionWindows" : [ { "alertSuppressionWindows" : [ {
"testIds" : [ "281474976710661" ], "testIds" : [ "281474976710661" ],
@ -513,6 +525,18 @@ class TestDashboardsApi(unittest.TestCase):
}, { }, {
"numberOfDataPoints" : 24192, "numberOfDataPoints" : 24192,
"endDate" : "2023-05-16T10:14:28Z", "endDate" : "2023-05-16T10:14:28Z",
"_links" : {
"self" : {
"hreflang" : "hreflang",
"templated" : true,
"profile" : "profile",
"name" : "name",
"href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
"type" : "type",
"deprecation" : "deprecation",
"title" : "title"
}
},
"cardId" : "lrxxr", "cardId" : "lrxxr",
"alertSuppressionWindows" : [ { "alertSuppressionWindows" : [ {
"testIds" : [ "281474976710661" ], "testIds" : [ "281474976710661" ],
@ -598,6 +622,18 @@ class TestDashboardsApi(unittest.TestCase):
"target" : "www.google.com" "target" : "www.google.com"
} ], } ],
"columns" : [ { "columns" : [ {
"_links" : {
"self" : {
"hreflang" : "hreflang",
"templated" : true,
"profile" : "profile",
"name" : "name",
"href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
"type" : "type",
"deprecation" : "deprecation",
"title" : "title"
}
},
"columnId" : "938to", "columnId" : "938to",
"alertSuppressionWindows" : [ { "alertSuppressionWindows" : [ {
"testIds" : [ "281474976710661" ], "testIds" : [ "281474976710661" ],
@ -644,6 +680,18 @@ class TestDashboardsApi(unittest.TestCase):
} ], } ],
"status" : "No data" "status" : "No data"
}, { }, {
"_links" : {
"self" : {
"hreflang" : "hreflang",
"templated" : true,
"profile" : "profile",
"name" : "name",
"href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
"type" : "type",
"deprecation" : "deprecation",
"title" : "title"
}
},
"columnId" : "938to", "columnId" : "938to",
"alertSuppressionWindows" : [ { "alertSuppressionWindows" : [ {
"testIds" : [ "281474976710661" ], "testIds" : [ "281474976710661" ],
@ -1083,6 +1131,125 @@ class TestDashboardsApi(unittest.TestCase):
self.assertIsNotNone(element) self.assertIsNotNone(element)
assert_constructed_model_matches_example_json(element, response_loaded_json[index]) assert_constructed_model_matches_example_json(element, response_loaded_json[index])
def test_get_individual_card_data_models_validation(self) -> None:
"""Test case for get_individual_card_data request and response models"""
response_body_json = """
{
"numberOfDataPoints" : 24192,
"endDate" : "2023-05-16T10:14:28Z",
"_links" : {
"self" : {
"hreflang" : "hreflang",
"templated" : true,
"profile" : "profile",
"name" : "name",
"href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
"type" : "type",
"deprecation" : "deprecation",
"title" : "title"
}
},
"cardId" : "lrxxr",
"alertSuppressionWindows" : [ {
"testIds" : [ "281474976710661" ],
"repeatUnit" : "week",
"durationInSeconds" : 7200,
"repeat" : "custom",
"name" : "Test dashboards",
"repeatEvery" : 5,
"id" : "281474976710662",
"startTimes" : [ "2023-05-16T10:14:28Z" ]
}, {
"testIds" : [ "281474976710661" ],
"repeatUnit" : "week",
"durationInSeconds" : 7200,
"repeat" : "custom",
"name" : "Test dashboards",
"repeatEvery" : 5,
"id" : "281474976710662",
"startTimes" : [ "2023-05-16T10:14:28Z" ]
} ],
"binSize" : 3600,
"previousValue" : 500.0,
"value" : 100.0,
"startDate" : "2023-05-16T10:14:28Z",
"timestamp" : 1567620000,
"status" : "No data"
}"""
response_loaded_json = json.loads(response_body_json)
response_from_json = thousandeyes_sdk.dashboards.models.ApiNumbersCardData.from_json(response_body_json)
assert_constructed_model_matches_example_json(response_from_json, response_loaded_json)
def test_get_individual_column_data_models_validation(self) -> None:
"""Test case for get_individual_column_data request and response models"""
response_body_json = """
{
"_links" : {
"self" : {
"hreflang" : "hreflang",
"templated" : true,
"profile" : "profile",
"name" : "name",
"href" : "https://api.thousandeyes.com/v7/link/to/resource/id",
"type" : "type",
"deprecation" : "deprecation",
"title" : "title"
}
},
"columnId" : "938to",
"alertSuppressionWindows" : [ {
"testIds" : [ "281474976710661" ],
"repeatUnit" : "week",
"durationInSeconds" : 7200,
"repeat" : "custom",
"name" : "Test dashboards",
"repeatEvery" : 5,
"id" : "281474976710662",
"startTimes" : [ "2023-05-16T10:14:28Z" ]
}, {
"testIds" : [ "281474976710661" ],
"repeatUnit" : "week",
"durationInSeconds" : 7200,
"repeat" : "custom",
"name" : "Test dashboards",
"repeatEvery" : 5,
"id" : "281474976710662",
"startTimes" : [ "2023-05-16T10:14:28Z" ]
} ],
"binSize" : 3600,
"points" : [ {
"numberOfDataPoints" : 23304,
"groups" : [ {
"groupProperty" : "COUNTRY",
"groupValue" : "US"
}, {
"groupProperty" : "COUNTRY",
"groupValue" : "US"
} ],
"value" : 100.0,
"timestamp" : 1567620000
}, {
"numberOfDataPoints" : 23304,
"groups" : [ {
"groupProperty" : "COUNTRY",
"groupValue" : "US"
}, {
"groupProperty" : "COUNTRY",
"groupValue" : "US"
} ],
"value" : 100.0,
"timestamp" : 1567620000
} ],
"status" : "No data"
}"""
response_loaded_json = json.loads(response_body_json)
response_from_json = thousandeyes_sdk.dashboards.models.ApiMultiMetricColumnData.from_json(response_body_json)
assert_constructed_model_matches_example_json(response_from_json, response_loaded_json)
def test_update_dashboard_models_validation(self) -> None: def test_update_dashboard_models_validation(self) -> None:
"""Test case for update_dashboard request and response models""" """Test case for update_dashboard request and response models"""
request_body_json = """ request_body_json = """

View File

@ -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: This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 7.0.62 - API version: 7.0.68
- Generator version: 7.6.0 - Generator version: 7.6.0
- Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator

View File

@ -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: This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 7.0.62 - API version: 7.0.68
- Generator version: 7.6.0 - Generator version: 7.6.0
- Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator

View File

@ -11,7 +11,7 @@ docs/EndpointHttpServerBaseTest.md
docs/EndpointHttpServerInstantTest.md docs/EndpointHttpServerInstantTest.md
docs/EndpointHttpServerTest.md docs/EndpointHttpServerTest.md
docs/EndpointInstantTest.md docs/EndpointInstantTest.md
docs/EndpointIpVersionTemplate.md docs/EndpointIpVersionIn.md
docs/EndpointRunScheduledInstantTestResult.md docs/EndpointRunScheduledInstantTestResult.md
docs/EndpointScheduledTestType.md docs/EndpointScheduledTestType.md
docs/EndpointSpecificAgentsSelectorConfig.md docs/EndpointSpecificAgentsSelectorConfig.md
@ -49,7 +49,7 @@ src/thousandeyes_sdk/endpoint_instant_tests/models/endpoint_http_server_base_tes
src/thousandeyes_sdk/endpoint_instant_tests/models/endpoint_http_server_instant_test.py src/thousandeyes_sdk/endpoint_instant_tests/models/endpoint_http_server_instant_test.py
src/thousandeyes_sdk/endpoint_instant_tests/models/endpoint_http_server_test.py src/thousandeyes_sdk/endpoint_instant_tests/models/endpoint_http_server_test.py
src/thousandeyes_sdk/endpoint_instant_tests/models/endpoint_instant_test.py src/thousandeyes_sdk/endpoint_instant_tests/models/endpoint_instant_test.py
src/thousandeyes_sdk/endpoint_instant_tests/models/endpoint_ip_version_template.py src/thousandeyes_sdk/endpoint_instant_tests/models/endpoint_ip_version_in.py
src/thousandeyes_sdk/endpoint_instant_tests/models/endpoint_run_scheduled_instant_test_result.py src/thousandeyes_sdk/endpoint_instant_tests/models/endpoint_run_scheduled_instant_test_result.py
src/thousandeyes_sdk/endpoint_instant_tests/models/endpoint_scheduled_test_type.py src/thousandeyes_sdk/endpoint_instant_tests/models/endpoint_scheduled_test_type.py
src/thousandeyes_sdk/endpoint_instant_tests/models/endpoint_specific_agents_selector_config.py src/thousandeyes_sdk/endpoint_instant_tests/models/endpoint_specific_agents_selector_config.py

View File

@ -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: This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 7.0.62 - API version: 7.0.68
- Generator version: 7.6.0 - Generator version: 7.6.0
- Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator - Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator
@ -121,7 +121,7 @@ Class | Method | HTTP request | Description
- [EndpointHttpServerInstantTest](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-instant-tests/docs/EndpointHttpServerInstantTest.md) - [EndpointHttpServerInstantTest](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-instant-tests/docs/EndpointHttpServerInstantTest.md)
- [EndpointHttpServerTest](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-instant-tests/docs/EndpointHttpServerTest.md) - [EndpointHttpServerTest](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-instant-tests/docs/EndpointHttpServerTest.md)
- [EndpointInstantTest](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-instant-tests/docs/EndpointInstantTest.md) - [EndpointInstantTest](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-instant-tests/docs/EndpointInstantTest.md)
- [EndpointIpVersionTemplate](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-instant-tests/docs/EndpointIpVersionTemplate.md) - [EndpointIpVersionIn](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-instant-tests/docs/EndpointIpVersionIn.md)
- [EndpointRunScheduledInstantTestResult](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-instant-tests/docs/EndpointRunScheduledInstantTestResult.md) - [EndpointRunScheduledInstantTestResult](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-instant-tests/docs/EndpointRunScheduledInstantTestResult.md)
- [EndpointScheduledTestType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-instant-tests/docs/EndpointScheduledTestType.md) - [EndpointScheduledTestType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-instant-tests/docs/EndpointScheduledTestType.md)
- [EndpointSpecificAgentsSelectorConfig](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-instant-tests/docs/EndpointSpecificAgentsSelectorConfig.md) - [EndpointSpecificAgentsSelectorConfig](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-endpoint-instant-tests/docs/EndpointSpecificAgentsSelectorConfig.md)

View File

@ -10,6 +10,7 @@ Name | Type | Description | Notes
**endpoint_agent_labels** | **List[str]** | List of endpoint agent label IDs (obtained from &#x60;/endpoint/labels&#x60; endpoint), required when &#x60;agentSelectorType&#x60; is set to &#x60;agent-labels&#x60;. | [optional] **endpoint_agent_labels** | **List[str]** | List of endpoint agent label IDs (obtained from &#x60;/endpoint/labels&#x60; endpoint), required when &#x60;agentSelectorType&#x60; is set to &#x60;agent-labels&#x60;. | [optional]
**max_machines** | **int** | Maximum number of agents which can execute the test. | [optional] [default to 25] **max_machines** | **int** | Maximum number of agents which can execute the test. | [optional] [default to 25]
**test_name** | **str** | Name of the test. | **test_name** | **str** | Name of the test. |
**ip_version** | [**EndpointIpVersionIn**](EndpointIpVersionIn.md) | | [optional]
**server_name** | **str** | A server address without a protocol or IP address. **Deprecated, use &#x60;server&#x60; instead**. | [optional] **server_name** | **str** | A server address without a protocol or IP address. **Deprecated, use &#x60;server&#x60; instead**. | [optional]
**server** | **str** | Target domain name or IP address. | **server** | **str** | Target domain name or IP address. |
**port** | **int** | Port number. | [optional] [default to 443] **port** | **int** | Port number. | [optional] [default to 443]

View File

@ -18,7 +18,7 @@ Name | Type | Description | Notes
**modified_date** | **datetime** | UTC last modification date (ISO date-time format). | [optional] [readonly] **modified_date** | **datetime** | UTC last modification date (ISO date-time format). | [optional] [readonly]
**network_measurements** | **bool** | Enable or disable network measurements. Set to true to enable or false to disable network measurements. | [optional] [default to True] **network_measurements** | **bool** | Enable or disable network measurements. Set to true to enable or false to disable network measurements. | [optional] [default to True]
**protocol** | [**EndpointTestProtocol**](EndpointTestProtocol.md) | | [optional] **protocol** | [**EndpointTestProtocol**](EndpointTestProtocol.md) | | [optional]
**ip_version** | [**EndpointIpVersionTemplate**](EndpointIpVersionTemplate.md) | | [optional] **ip_version** | **str** | For reading current network test configurations, the IP version of the test. Values include V4_ONLY, V6_ONLY, V6_PREFER, and OS_DEFAULT. | [optional]
**server** | **str** | Target domain name or IP address. | [optional] **server** | **str** | Target domain name or IP address. | [optional]
**test_id** | **str** | Each test is assigned a unique ID to access test data from other endpoints. | [optional] [readonly] **test_id** | **str** | Each test is assigned a unique ID to access test data from other endpoints. | [optional] [readonly]
**test_name** | **str** | Name of the test. | [optional] **test_name** | **str** | Name of the test. | [optional]

View File

@ -10,6 +10,7 @@ Name | Type | Description | Notes
**endpoint_agent_labels** | **List[str]** | List of endpoint agent label IDs (obtained from &#x60;/endpoint/labels&#x60; endpoint), required when &#x60;agentSelectorType&#x60; is set to &#x60;agent-labels&#x60;. | [optional] **endpoint_agent_labels** | **List[str]** | List of endpoint agent label IDs (obtained from &#x60;/endpoint/labels&#x60; endpoint), required when &#x60;agentSelectorType&#x60; is set to &#x60;agent-labels&#x60;. | [optional]
**max_machines** | **int** | Maximum number of agents which can execute the test. | [optional] [default to 25] **max_machines** | **int** | Maximum number of agents which can execute the test. | [optional] [default to 25]
**test_name** | **str** | Name of the test. | **test_name** | **str** | Name of the test. |
**ip_version** | [**EndpointIpVersionIn**](EndpointIpVersionIn.md) | | [optional]
**auth_type** | [**EndpointTestAuthType**](EndpointTestAuthType.md) | | [optional] **auth_type** | [**EndpointTestAuthType**](EndpointTestAuthType.md) | | [optional]
**has_path_trace_in_session** | **bool** | Enables \&quot;in session\&quot; path trace. When enabled, this option initiates a TCP session with the target server and sends path trace packets within the established TCP session. | [optional] **has_path_trace_in_session** | **bool** | Enables \&quot;in session\&quot; path trace. When enabled, this option initiates a TCP session with the target server and sends path trace packets within the established TCP session. | [optional]
**http_time_limit** | **int** | Maximum amount of time in milliseconds the agents wait before a request times out. | [optional] [default to 5000] **http_time_limit** | **int** | Maximum amount of time in milliseconds the agents wait before a request times out. | [optional] [default to 5000]

View File

@ -18,7 +18,7 @@ Name | Type | Description | Notes
**modified_date** | **datetime** | UTC last modification date (ISO date-time format). | [optional] [readonly] **modified_date** | **datetime** | UTC last modification date (ISO date-time format). | [optional] [readonly]
**network_measurements** | **bool** | Enable or disable network measurements. Set to true to enable or false to disable network measurements. | [optional] [default to True] **network_measurements** | **bool** | Enable or disable network measurements. Set to true to enable or false to disable network measurements. | [optional] [default to True]
**protocol** | [**EndpointTestProtocol**](EndpointTestProtocol.md) | | [optional] **protocol** | [**EndpointTestProtocol**](EndpointTestProtocol.md) | | [optional]
**ip_version** | [**EndpointIpVersionTemplate**](EndpointIpVersionTemplate.md) | | [optional] **ip_version** | **str** | For reading current network test configurations, the IP version of the test. Values include V4_ONLY, V6_ONLY, V6_PREFER, and OS_DEFAULT. | [optional]
**server** | **str** | Target domain name or IP address. | [optional] **server** | **str** | Target domain name or IP address. | [optional]
**test_id** | **str** | Each test is assigned a unique ID to access test data from other endpoints. | [optional] [readonly] **test_id** | **str** | Each test is assigned a unique ID to access test data from other endpoints. | [optional] [readonly]
**test_name** | **str** | Name of the test. | [optional] **test_name** | **str** | Name of the test. | [optional]

View File

@ -10,6 +10,7 @@ Name | Type | Description | Notes
**endpoint_agent_labels** | **List[str]** | List of endpoint agent label IDs (obtained from &#x60;/endpoint/labels&#x60; endpoint), required when &#x60;agentSelectorType&#x60; is set to &#x60;agent-labels&#x60;. | [optional] **endpoint_agent_labels** | **List[str]** | List of endpoint agent label IDs (obtained from &#x60;/endpoint/labels&#x60; endpoint), required when &#x60;agentSelectorType&#x60; is set to &#x60;agent-labels&#x60;. | [optional]
**max_machines** | **int** | Maximum number of agents which can execute the test. | [optional] [default to 25] **max_machines** | **int** | Maximum number of agents which can execute the test. | [optional] [default to 25]
**test_name** | **str** | Name of the test. | **test_name** | **str** | Name of the test. |
**ip_version** | [**EndpointIpVersionIn**](EndpointIpVersionIn.md) | | [optional]
## Example ## Example

View File

@ -1,6 +1,6 @@
# EndpointIpVersionTemplate # EndpointIpVersionIn
IP version the test should use for network tests. For configuring network tests, the IP version of the test.
## Properties ## Properties

View File

@ -18,7 +18,7 @@ Name | Type | Description | Notes
**modified_date** | **datetime** | UTC last modification date (ISO date-time format). | [optional] [readonly] **modified_date** | **datetime** | UTC last modification date (ISO date-time format). | [optional] [readonly]
**network_measurements** | **bool** | Enable or disable network measurements. Set to true to enable or false to disable network measurements. | [optional] [default to True] **network_measurements** | **bool** | Enable or disable network measurements. Set to true to enable or false to disable network measurements. | [optional] [default to True]
**protocol** | [**EndpointTestProtocol**](EndpointTestProtocol.md) | | [optional] **protocol** | [**EndpointTestProtocol**](EndpointTestProtocol.md) | | [optional]
**ip_version** | [**EndpointIpVersionTemplate**](EndpointIpVersionTemplate.md) | | [optional] **ip_version** | **str** | For reading current network test configurations, the IP version of the test. Values include V4_ONLY, V6_ONLY, V6_PREFER, and OS_DEFAULT. | [optional]
**server** | **str** | Target domain name or IP address. | [optional] **server** | **str** | Target domain name or IP address. | [optional]
**test_id** | **str** | Each test is assigned a unique ID to access test data from other endpoints. | [optional] [readonly] **test_id** | **str** | Each test is assigned a unique ID to access test data from other endpoints. | [optional] [readonly]
**test_name** | **str** | Name of the test. | [optional] **test_name** | **str** | Name of the test. | [optional]

View File

@ -29,7 +29,7 @@ from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_http_server_base_te
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_http_server_instant_test import EndpointHttpServerInstantTest from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_http_server_instant_test import EndpointHttpServerInstantTest
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_http_server_test import EndpointHttpServerTest from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_http_server_test import EndpointHttpServerTest
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_instant_test import EndpointInstantTest from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_instant_test import EndpointInstantTest
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_ip_version_template import EndpointIpVersionTemplate from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_ip_version_in import EndpointIpVersionIn
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_run_scheduled_instant_test_result import EndpointRunScheduledInstantTestResult from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_run_scheduled_instant_test_result import EndpointRunScheduledInstantTestResult
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_scheduled_test_type import EndpointScheduledTestType from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_scheduled_test_type import EndpointScheduledTestType
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_specific_agents_selector_config import EndpointSpecificAgentsSelectorConfig from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_specific_agents_selector_config import EndpointSpecificAgentsSelectorConfig

View File

@ -22,7 +22,7 @@ from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_http_server_base_te
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_http_server_instant_test import EndpointHttpServerInstantTest from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_http_server_instant_test import EndpointHttpServerInstantTest
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_http_server_test import EndpointHttpServerTest from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_http_server_test import EndpointHttpServerTest
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_instant_test import EndpointInstantTest from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_instant_test import EndpointInstantTest
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_ip_version_template import EndpointIpVersionTemplate from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_ip_version_in import EndpointIpVersionIn
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_run_scheduled_instant_test_result import EndpointRunScheduledInstantTestResult from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_run_scheduled_instant_test_result import EndpointRunScheduledInstantTestResult
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_scheduled_test_type import EndpointScheduledTestType from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_scheduled_test_type import EndpointScheduledTestType
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_specific_agents_selector_config import EndpointSpecificAgentsSelectorConfig from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_specific_agents_selector_config import EndpointSpecificAgentsSelectorConfig

View File

@ -18,6 +18,7 @@ import json
from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_ip_version_in import EndpointIpVersionIn
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_agent_selector_type import EndpointTestAgentSelectorType from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_agent_selector_type import EndpointTestAgentSelectorType
from typing import Optional, Set from typing import Optional, Set
from typing_extensions import Self from typing_extensions import Self
@ -31,10 +32,11 @@ class EndpointAgentToServerInstantTest(BaseModel):
endpoint_agent_labels: Optional[List[StrictStr]] = Field(default=None, description="List of endpoint agent label IDs (obtained from `/endpoint/labels` endpoint), required when `agentSelectorType` is set to `agent-labels`.", alias="endpointAgentLabels") endpoint_agent_labels: Optional[List[StrictStr]] = Field(default=None, description="List of endpoint agent label IDs (obtained from `/endpoint/labels` endpoint), required when `agentSelectorType` is set to `agent-labels`.", alias="endpointAgentLabels")
max_machines: Optional[StrictInt] = Field(default=25, description="Maximum number of agents which can execute the test.", alias="maxMachines") max_machines: Optional[StrictInt] = Field(default=25, description="Maximum number of agents which can execute the test.", alias="maxMachines")
test_name: StrictStr = Field(description="Name of the test.", alias="testName") test_name: StrictStr = Field(description="Name of the test.", alias="testName")
ip_version: Optional[EndpointIpVersionIn] = Field(default=None, alias="ipVersion")
server_name: Optional[StrictStr] = Field(default=None, description="A server address without a protocol or IP address. **Deprecated, use `server` instead**.", alias="serverName") server_name: Optional[StrictStr] = Field(default=None, description="A server address without a protocol or IP address. **Deprecated, use `server` instead**.", alias="serverName")
server: StrictStr = Field(description="Target domain name or IP address.") server: StrictStr = Field(description="Target domain name or IP address.")
port: Optional[StrictInt] = Field(default=443, description="Port number.") port: Optional[StrictInt] = Field(default=443, description="Port number.")
__properties: ClassVar[List[str]] = ["agentSelectorType", "agents", "endpointAgentLabels", "maxMachines", "testName", "serverName", "server", "port"] __properties: ClassVar[List[str]] = ["agentSelectorType", "agents", "endpointAgentLabels", "maxMachines", "testName", "ipVersion", "serverName", "server", "port"]
model_config = ConfigDict( model_config = ConfigDict(
populate_by_name=True, populate_by_name=True,
@ -93,6 +95,7 @@ class EndpointAgentToServerInstantTest(BaseModel):
"endpointAgentLabels": obj.get("endpointAgentLabels"), "endpointAgentLabels": obj.get("endpointAgentLabels"),
"maxMachines": obj.get("maxMachines") if obj.get("maxMachines") is not None else 25, "maxMachines": obj.get("maxMachines") if obj.get("maxMachines") is not None else 25,
"testName": obj.get("testName"), "testName": obj.get("testName"),
"ipVersion": obj.get("ipVersion"),
"serverName": obj.get("serverName"), "serverName": obj.get("serverName"),
"server": obj.get("server"), "server": obj.get("server"),
"port": obj.get("port") if obj.get("port") is not None else 443 "port": obj.get("port") if obj.get("port") is not None else 443

View File

@ -21,7 +21,6 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, Strict
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from typing_extensions import Annotated from typing_extensions import Annotated
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_agent_selector_config import EndpointAgentSelectorConfig from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_agent_selector_config import EndpointAgentSelectorConfig
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_ip_version_template import EndpointIpVersionTemplate
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_links import EndpointTestLinks from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_links import EndpointTestLinks
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_protocol import EndpointTestProtocol from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_protocol import EndpointTestProtocol
from thousandeyes_sdk.endpoint_instant_tests.models.test_interval import TestInterval from thousandeyes_sdk.endpoint_instant_tests.models.test_interval import TestInterval
@ -47,7 +46,7 @@ class EndpointAgentToServerTest(BaseModel):
modified_date: Optional[datetime] = Field(default=None, description="UTC last modification date (ISO date-time format).", alias="modifiedDate") modified_date: Optional[datetime] = Field(default=None, description="UTC last modification date (ISO date-time format).", alias="modifiedDate")
network_measurements: Optional[StrictBool] = Field(default=True, description="Enable or disable network measurements. Set to true to enable or false to disable network measurements.", alias="networkMeasurements") network_measurements: Optional[StrictBool] = Field(default=True, description="Enable or disable network measurements. Set to true to enable or false to disable network measurements.", alias="networkMeasurements")
protocol: Optional[EndpointTestProtocol] = None protocol: Optional[EndpointTestProtocol] = None
ip_version: Optional[EndpointIpVersionTemplate] = Field(default=None, alias="ipVersion") ip_version: Optional[StrictStr] = Field(default=None, description="For reading current network test configurations, the IP version of the test. Values include V4_ONLY, V6_ONLY, V6_PREFER, and OS_DEFAULT.", alias="ipVersion")
server: Optional[StrictStr] = Field(default=None, description="Target domain name or IP address.") server: Optional[StrictStr] = Field(default=None, description="Target domain name or IP address.")
test_id: Optional[StrictStr] = Field(default=None, description="Each test is assigned a unique ID to access test data from other endpoints.", alias="testId") test_id: Optional[StrictStr] = Field(default=None, description="Each test is assigned a unique ID to access test data from other endpoints.", alias="testId")
test_name: Optional[StrictStr] = Field(default=None, description="Name of the test.", alias="testName") test_name: Optional[StrictStr] = Field(default=None, description="Name of the test.", alias="testName")

View File

@ -18,6 +18,7 @@ import json
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_ip_version_in import EndpointIpVersionIn
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_agent_selector_type import EndpointTestAgentSelectorType from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_agent_selector_type import EndpointTestAgentSelectorType
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_auth_type import EndpointTestAuthType from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_auth_type import EndpointTestAuthType
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_protocol import EndpointTestProtocol from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_protocol import EndpointTestProtocol
@ -35,6 +36,7 @@ class EndpointHttpServerInstantTest(BaseModel):
endpoint_agent_labels: Optional[List[StrictStr]] = Field(default=None, description="List of endpoint agent label IDs (obtained from `/endpoint/labels` endpoint), required when `agentSelectorType` is set to `agent-labels`.", alias="endpointAgentLabels") endpoint_agent_labels: Optional[List[StrictStr]] = Field(default=None, description="List of endpoint agent label IDs (obtained from `/endpoint/labels` endpoint), required when `agentSelectorType` is set to `agent-labels`.", alias="endpointAgentLabels")
max_machines: Optional[StrictInt] = Field(default=25, description="Maximum number of agents which can execute the test.", alias="maxMachines") max_machines: Optional[StrictInt] = Field(default=25, description="Maximum number of agents which can execute the test.", alias="maxMachines")
test_name: StrictStr = Field(description="Name of the test.", alias="testName") test_name: StrictStr = Field(description="Name of the test.", alias="testName")
ip_version: Optional[EndpointIpVersionIn] = Field(default=None, alias="ipVersion")
auth_type: Optional[EndpointTestAuthType] = Field(default=None, alias="authType") auth_type: Optional[EndpointTestAuthType] = Field(default=None, alias="authType")
has_path_trace_in_session: Optional[StrictBool] = Field(default=None, description="Enables \"in session\" path trace. When enabled, this option initiates a TCP session with the target server and sends path trace packets within the established TCP session.", alias="hasPathTraceInSession") has_path_trace_in_session: Optional[StrictBool] = Field(default=None, description="Enables \"in session\" path trace. When enabled, this option initiates a TCP session with the target server and sends path trace packets within the established TCP session.", alias="hasPathTraceInSession")
http_time_limit: Optional[StrictInt] = Field(default=5000, description="Maximum amount of time in milliseconds the agents wait before a request times out.", alias="httpTimeLimit") http_time_limit: Optional[StrictInt] = Field(default=5000, description="Maximum amount of time in milliseconds the agents wait before a request times out.", alias="httpTimeLimit")
@ -49,7 +51,7 @@ class EndpointHttpServerInstantTest(BaseModel):
network_measurements: Optional[StrictBool] = Field(default=True, description="Enable or disable network measurements. Set to true to enable or false to disable network measurements.", alias="networkMeasurements") network_measurements: Optional[StrictBool] = Field(default=True, description="Enable or disable network measurements. Set to true to enable or false to disable network measurements.", alias="networkMeasurements")
target_response_time: Optional[StrictInt] = Field(default=1000, description="Response time target in milliseconds. Affects the colors of agents and legends on the view page. The value is compared with actual response time in order to determine the color scale (from green to red).", alias="targetResponseTime") target_response_time: Optional[StrictInt] = Field(default=1000, description="Response time target in milliseconds. Affects the colors of agents and legends on the view page. The value is compared with actual response time in order to determine the color scale (from green to red).", alias="targetResponseTime")
password: Optional[StrictStr] = Field(default=None, description="Password for Basic/NTLM authentication.") password: Optional[StrictStr] = Field(default=None, description="Password for Basic/NTLM authentication.")
__properties: ClassVar[List[str]] = ["agentSelectorType", "agents", "endpointAgentLabels", "maxMachines", "testName", "authType", "hasPathTraceInSession", "httpTimeLimit", "protocol", "username", "sslVersionId", "tcpProbeMode", "verifyCertificate", "url", "hasPing", "hasTraceroute", "networkMeasurements", "targetResponseTime", "password"] __properties: ClassVar[List[str]] = ["agentSelectorType", "agents", "endpointAgentLabels", "maxMachines", "testName", "ipVersion", "authType", "hasPathTraceInSession", "httpTimeLimit", "protocol", "username", "sslVersionId", "tcpProbeMode", "verifyCertificate", "url", "hasPing", "hasTraceroute", "networkMeasurements", "targetResponseTime", "password"]
model_config = ConfigDict( model_config = ConfigDict(
populate_by_name=True, populate_by_name=True,
@ -108,6 +110,7 @@ class EndpointHttpServerInstantTest(BaseModel):
"endpointAgentLabels": obj.get("endpointAgentLabels"), "endpointAgentLabels": obj.get("endpointAgentLabels"),
"maxMachines": obj.get("maxMachines") if obj.get("maxMachines") is not None else 25, "maxMachines": obj.get("maxMachines") if obj.get("maxMachines") is not None else 25,
"testName": obj.get("testName"), "testName": obj.get("testName"),
"ipVersion": obj.get("ipVersion"),
"authType": obj.get("authType"), "authType": obj.get("authType"),
"hasPathTraceInSession": obj.get("hasPathTraceInSession"), "hasPathTraceInSession": obj.get("hasPathTraceInSession"),
"httpTimeLimit": obj.get("httpTimeLimit") if obj.get("httpTimeLimit") is not None else 5000, "httpTimeLimit": obj.get("httpTimeLimit") if obj.get("httpTimeLimit") is not None else 5000,

View File

@ -21,7 +21,6 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, Strict
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from typing_extensions import Annotated from typing_extensions import Annotated
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_agent_selector_config import EndpointAgentSelectorConfig from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_agent_selector_config import EndpointAgentSelectorConfig
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_ip_version_template import EndpointIpVersionTemplate
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_auth_type import EndpointTestAuthType from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_auth_type import EndpointTestAuthType
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_links import EndpointTestLinks from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_links import EndpointTestLinks
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_protocol import EndpointTestProtocol from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_protocol import EndpointTestProtocol
@ -49,7 +48,7 @@ class EndpointHttpServerTest(BaseModel):
modified_date: Optional[datetime] = Field(default=None, description="UTC last modification date (ISO date-time format).", alias="modifiedDate") modified_date: Optional[datetime] = Field(default=None, description="UTC last modification date (ISO date-time format).", alias="modifiedDate")
network_measurements: Optional[StrictBool] = Field(default=True, description="Enable or disable network measurements. Set to true to enable or false to disable network measurements.", alias="networkMeasurements") network_measurements: Optional[StrictBool] = Field(default=True, description="Enable or disable network measurements. Set to true to enable or false to disable network measurements.", alias="networkMeasurements")
protocol: Optional[EndpointTestProtocol] = None protocol: Optional[EndpointTestProtocol] = None
ip_version: Optional[EndpointIpVersionTemplate] = Field(default=None, alias="ipVersion") ip_version: Optional[StrictStr] = Field(default=None, description="For reading current network test configurations, the IP version of the test. Values include V4_ONLY, V6_ONLY, V6_PREFER, and OS_DEFAULT.", alias="ipVersion")
server: Optional[StrictStr] = Field(default=None, description="Target domain name or IP address.") server: Optional[StrictStr] = Field(default=None, description="Target domain name or IP address.")
test_id: Optional[StrictStr] = Field(default=None, description="Each test is assigned a unique ID to access test data from other endpoints.", alias="testId") test_id: Optional[StrictStr] = Field(default=None, description="Each test is assigned a unique ID to access test data from other endpoints.", alias="testId")
test_name: Optional[StrictStr] = Field(default=None, description="Name of the test.", alias="testName") test_name: Optional[StrictStr] = Field(default=None, description="Name of the test.", alias="testName")

View File

@ -18,6 +18,7 @@ import json
from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_ip_version_in import EndpointIpVersionIn
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_agent_selector_type import EndpointTestAgentSelectorType from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_agent_selector_type import EndpointTestAgentSelectorType
from typing import Optional, Set from typing import Optional, Set
from typing_extensions import Self from typing_extensions import Self
@ -31,7 +32,8 @@ class EndpointInstantTest(BaseModel):
endpoint_agent_labels: Optional[List[StrictStr]] = Field(default=None, description="List of endpoint agent label IDs (obtained from `/endpoint/labels` endpoint), required when `agentSelectorType` is set to `agent-labels`.", alias="endpointAgentLabels") endpoint_agent_labels: Optional[List[StrictStr]] = Field(default=None, description="List of endpoint agent label IDs (obtained from `/endpoint/labels` endpoint), required when `agentSelectorType` is set to `agent-labels`.", alias="endpointAgentLabels")
max_machines: Optional[StrictInt] = Field(default=25, description="Maximum number of agents which can execute the test.", alias="maxMachines") max_machines: Optional[StrictInt] = Field(default=25, description="Maximum number of agents which can execute the test.", alias="maxMachines")
test_name: StrictStr = Field(description="Name of the test.", alias="testName") test_name: StrictStr = Field(description="Name of the test.", alias="testName")
__properties: ClassVar[List[str]] = ["agentSelectorType", "agents", "endpointAgentLabels", "maxMachines", "testName"] ip_version: Optional[EndpointIpVersionIn] = Field(default=None, alias="ipVersion")
__properties: ClassVar[List[str]] = ["agentSelectorType", "agents", "endpointAgentLabels", "maxMachines", "testName", "ipVersion"]
model_config = ConfigDict( model_config = ConfigDict(
populate_by_name=True, populate_by_name=True,
@ -89,7 +91,8 @@ class EndpointInstantTest(BaseModel):
"agents": obj.get("agents"), "agents": obj.get("agents"),
"endpointAgentLabels": obj.get("endpointAgentLabels"), "endpointAgentLabels": obj.get("endpointAgentLabels"),
"maxMachines": obj.get("maxMachines") if obj.get("maxMachines") is not None else 25, "maxMachines": obj.get("maxMachines") if obj.get("maxMachines") is not None else 25,
"testName": obj.get("testName") "testName": obj.get("testName"),
"ipVersion": obj.get("ipVersion")
}) })
return _obj return _obj

View File

@ -17,9 +17,9 @@ from enum import Enum
from typing_extensions import Self from typing_extensions import Self
class EndpointIpVersionTemplate(str, Enum): class EndpointIpVersionIn(str, Enum):
""" """
IP version the test should use for network tests. For configuring network tests, the IP version of the test.
""" """
""" """
@ -33,7 +33,7 @@ class EndpointIpVersionTemplate(str, Enum):
@classmethod @classmethod
def from_json(cls, json_str: str) -> Self: def from_json(cls, json_str: str) -> Self:
"""Create an instance of EndpointIpVersionTemplate from a JSON string""" """Create an instance of EndpointIpVersionIn from a JSON string"""
return cls(json.loads(json_str)) return cls(json.loads(json_str))
@classmethod @classmethod

View File

@ -20,7 +20,6 @@ from datetime import datetime
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_agent_selector_config import EndpointAgentSelectorConfig from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_agent_selector_config import EndpointAgentSelectorConfig
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_ip_version_template import EndpointIpVersionTemplate
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_scheduled_test_type import EndpointScheduledTestType from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_scheduled_test_type import EndpointScheduledTestType
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_links import EndpointTestLinks from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_links import EndpointTestLinks
from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_protocol import EndpointTestProtocol from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_test_protocol import EndpointTestProtocol
@ -47,7 +46,7 @@ class EndpointTest(BaseModel):
modified_date: Optional[datetime] = Field(default=None, description="UTC last modification date (ISO date-time format).", alias="modifiedDate") modified_date: Optional[datetime] = Field(default=None, description="UTC last modification date (ISO date-time format).", alias="modifiedDate")
network_measurements: Optional[StrictBool] = Field(default=True, description="Enable or disable network measurements. Set to true to enable or false to disable network measurements.", alias="networkMeasurements") network_measurements: Optional[StrictBool] = Field(default=True, description="Enable or disable network measurements. Set to true to enable or false to disable network measurements.", alias="networkMeasurements")
protocol: Optional[EndpointTestProtocol] = None protocol: Optional[EndpointTestProtocol] = None
ip_version: Optional[EndpointIpVersionTemplate] = Field(default=None, alias="ipVersion") ip_version: Optional[StrictStr] = Field(default=None, description="For reading current network test configurations, the IP version of the test. Values include V4_ONLY, V6_ONLY, V6_PREFER, and OS_DEFAULT.", alias="ipVersion")
server: Optional[StrictStr] = Field(default=None, description="Target domain name or IP address.") server: Optional[StrictStr] = Field(default=None, description="Target domain name or IP address.")
test_id: Optional[StrictStr] = Field(default=None, description="Each test is assigned a unique ID to access test data from other endpoints.", alias="testId") test_id: Optional[StrictStr] = Field(default=None, description="Each test is assigned a unique ID to access test data from other endpoints.", alias="testId")
test_name: Optional[StrictStr] = Field(default=None, description="Name of the test.", alias="testName") test_name: Optional[StrictStr] = Field(default=None, description="Name of the test.", alias="testName")

View File

@ -33,6 +33,7 @@ class TestAgentToServerEndpointInstantScheduledTestsApi(unittest.TestCase):
request_body_json = """ request_body_json = """
{ {
"server" : "www.example.com", "server" : "www.example.com",
"ipVersion" : "V4_ONLY",
"port" : 443, "port" : 443,
"agentSelectorType" : "all-agents", "agentSelectorType" : "all-agents",
"maxMachines" : 25, "maxMachines" : 25,

Some files were not shown because too many files have changed in this diff Show More