Merge pull request #58 from thousandeyes/20240925-073902

fix: Fix incorrect dependency report
This commit is contained in:
João Malés 2024-09-26 11:36:13 +01:00 committed by GitHub
commit eb1d1daeb6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1145 changed files with 16413 additions and 10729 deletions

View File

@ -8,8 +8,8 @@ docs/AccountGroupRequest.md
docs/AccountGroupRole.md
docs/AccountGroups.md
docs/AccountGroupsApi.md
docs/Agent.md
docs/AgentBase.md
docs/AgentResponse.md
docs/AuditUserEvents.md
docs/BaseRole.md
docs/CloudEnterpriseAgentType.md
@ -23,7 +23,7 @@ docs/EnterpriseAgentState.md
docs/Error.md
docs/ErrorDetail.md
docs/ErrorDetailCode.md
docs/Expand.md
docs/ExpandAccountGroupOptions.md
docs/ExtendedUser.md
docs/InterfaceIpMapping.md
docs/Link.md
@ -67,8 +67,8 @@ src/thousandeyes_sdk/administrative/models/account_group_info.py
src/thousandeyes_sdk/administrative/models/account_group_request.py
src/thousandeyes_sdk/administrative/models/account_group_role.py
src/thousandeyes_sdk/administrative/models/account_groups.py
src/thousandeyes_sdk/administrative/models/agent.py
src/thousandeyes_sdk/administrative/models/agent_base.py
src/thousandeyes_sdk/administrative/models/agent_response.py
src/thousandeyes_sdk/administrative/models/audit_user_events.py
src/thousandeyes_sdk/administrative/models/base_role.py
src/thousandeyes_sdk/administrative/models/cloud_enterprise_agent_type.py
@ -82,7 +82,7 @@ src/thousandeyes_sdk/administrative/models/enterprise_agent_state.py
src/thousandeyes_sdk/administrative/models/error.py
src/thousandeyes_sdk/administrative/models/error_detail.py
src/thousandeyes_sdk/administrative/models/error_detail_code.py
src/thousandeyes_sdk/administrative/models/expand.py
src/thousandeyes_sdk/administrative/models/expand_account_group_options.py
src/thousandeyes_sdk/administrative/models/extended_user.py
src/thousandeyes_sdk/administrative/models/interface_ip_mapping.py
src/thousandeyes_sdk/administrative/models/link.py

View File

@ -12,7 +12,7 @@ This API provides the following endpoints that define the operations to manage y
This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 7.0.15
- API version: 7.0.19
- Generator version: 7.6.0
- Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator
@ -86,7 +86,7 @@ with thousandeyes_sdk.core.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = thousandeyes_sdk.administrative.AccountGroupsApi(api_client)
account_group_request = thousandeyes_sdk.administrative.AccountGroupRequest() # AccountGroupRequest |
expand = [thousandeyes_sdk.administrative.Expand()] # List[Expand] | Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query. (optional)
expand = [thousandeyes_sdk.administrative.ExpandAccountGroupOptions()] # List[ExpandAccountGroupOptions] | Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query. (optional)
try:
# Create account group
@ -118,6 +118,7 @@ Class | Method | HTTP request | Description
*UserEventsApi* | [**get_user_events**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/UserEventsApi.md#get_user_events) | **GET** /audit-user-events | List activity log events
*UsersApi* | [**create_user**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/UsersApi.md#create_user) | **POST** /users | Create user
*UsersApi* | [**delete_user**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/UsersApi.md#delete_user) | **DELETE** /users/{id} | Delete user
*UsersApi* | [**get_current_user**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/UsersApi.md#get_current_user) | **GET** /users/current | Retrieve current user
*UsersApi* | [**get_user**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/UsersApi.md#get_user) | **GET** /users/{id} | Retrieve user
*UsersApi* | [**get_users**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/UsersApi.md#get_users) | **GET** /users | List users
*UsersApi* | [**update_user**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/UsersApi.md#update_user) | **PUT** /users/{id} | Update user
@ -131,8 +132,8 @@ Class | Method | HTTP request | Description
- [AccountGroupRequest](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/AccountGroupRequest.md)
- [AccountGroupRole](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/AccountGroupRole.md)
- [AccountGroups](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/AccountGroups.md)
- [Agent](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/Agent.md)
- [AgentBase](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/AgentBase.md)
- [AgentResponse](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/AgentResponse.md)
- [AuditUserEvents](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/AuditUserEvents.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)
@ -146,7 +147,7 @@ Class | Method | HTTP request | Description
- [Error](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/Error.md)
- [ErrorDetail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/ErrorDetail.md)
- [ErrorDetailCode](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/ErrorDetailCode.md)
- [Expand](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/Expand.md)
- [ExpandAccountGroupOptions](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/ExpandAccountGroupOptions.md)
- [ExtendedUser](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/ExtendedUser.md)
- [InterfaceIpMapping](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/InterfaceIpMapping.md)
- [Link](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-administrative/docs/Link.md)

View File

@ -13,6 +13,7 @@ Name | Type | Description | Notes
**users** | [**List[UserAccountGroup]**](UserAccountGroup.md) | | [optional]
**links** | [**SelfLinks**](SelfLinks.md) | | [optional]
**agents** | [**List[EnterpriseAgent]**](EnterpriseAgent.md) | | [optional]
**account_token** | **str** | The account group token is an alphanumeric string used to bind an Enterprise Agent to a specific account group. This token is not a password that must be kept secret. You can retrieve your `AccountGroupToken` from the `/account-groups/{id}` endpoint. | [optional]
## Example

View File

@ -26,7 +26,7 @@ Creates a new account group. This operation requires the `Edit all account group
import thousandeyes_sdk.administrative
from thousandeyes_sdk.administrative.models.account_group_request import AccountGroupRequest
from thousandeyes_sdk.administrative.models.created_account_group import CreatedAccountGroup
from thousandeyes_sdk.administrative.models.expand import Expand
from thousandeyes_sdk.administrative.models.expand_account_group_options import ExpandAccountGroupOptions
from thousandeyes_sdk.administrative.rest import ApiException
from pprint import pprint
@ -51,7 +51,7 @@ with thousandeyes_sdk.administrative.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = thousandeyes_sdk.administrative.AccountGroupsApi(api_client)
account_group_request = thousandeyes_sdk.administrative.AccountGroupRequest() # AccountGroupRequest |
expand = [thousandeyes_sdk.administrative.Expand()] # List[Expand] | Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query. (optional)
expand = [thousandeyes_sdk.administrative.ExpandAccountGroupOptions()] # List[ExpandAccountGroupOptions] | Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query. (optional)
try:
# Create account group
@ -70,7 +70,7 @@ with thousandeyes_sdk.administrative.ApiClient(configuration) as api_client:
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**account_group_request** | [**AccountGroupRequest**](AccountGroupRequest.md)| |
**expand** | [**List[Expand]**](Expand.md)| Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query. | [optional]
**expand** | [**List[ExpandAccountGroupOptions]**](ExpandAccountGroupOptions.md)| Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query. | [optional]
### Return type
@ -194,7 +194,7 @@ Retrieves detailed information about an account group using its ID. This operat
```python
import thousandeyes_sdk.administrative
from thousandeyes_sdk.administrative.models.account_group_detail import AccountGroupDetail
from thousandeyes_sdk.administrative.models.expand import Expand
from thousandeyes_sdk.administrative.models.expand_account_group_options import ExpandAccountGroupOptions
from thousandeyes_sdk.administrative.rest import ApiException
from pprint import pprint
@ -219,7 +219,7 @@ with thousandeyes_sdk.administrative.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = thousandeyes_sdk.administrative.AccountGroupsApi(api_client)
id = '1234' # str | Identifier for the account group.
expand = [thousandeyes_sdk.administrative.Expand()] # List[Expand] | Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query. (optional)
expand = [thousandeyes_sdk.administrative.ExpandAccountGroupOptions()] # List[ExpandAccountGroupOptions] | Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query. (optional)
try:
# Retrieve account group
@ -238,7 +238,7 @@ with thousandeyes_sdk.administrative.ApiClient(configuration) as api_client:
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**id** | **str**| Identifier for the account group. |
**expand** | [**List[Expand]**](Expand.md)| Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query. | [optional]
**expand** | [**List[ExpandAccountGroupOptions]**](ExpandAccountGroupOptions.md)| Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query. | [optional]
### Return type
@ -366,7 +366,7 @@ Updates an account group using its ID. You can modify the account groups name
import thousandeyes_sdk.administrative
from thousandeyes_sdk.administrative.models.account_group_detail import AccountGroupDetail
from thousandeyes_sdk.administrative.models.account_group_request import AccountGroupRequest
from thousandeyes_sdk.administrative.models.expand import Expand
from thousandeyes_sdk.administrative.models.expand_account_group_options import ExpandAccountGroupOptions
from thousandeyes_sdk.administrative.rest import ApiException
from pprint import pprint
@ -392,7 +392,7 @@ with thousandeyes_sdk.administrative.ApiClient(configuration) as api_client:
api_instance = thousandeyes_sdk.administrative.AccountGroupsApi(api_client)
id = '1234' # str | Identifier for the account group.
account_group_request = thousandeyes_sdk.administrative.AccountGroupRequest() # AccountGroupRequest |
expand = [thousandeyes_sdk.administrative.Expand()] # List[Expand] | Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query. (optional)
expand = [thousandeyes_sdk.administrative.ExpandAccountGroupOptions()] # List[ExpandAccountGroupOptions] | Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query. (optional)
try:
# Update account group
@ -412,7 +412,7 @@ Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**id** | **str**| Identifier for the account group. |
**account_group_request** | [**AccountGroupRequest**](AccountGroupRequest.md)| |
**expand** | [**List[Expand]**](Expand.md)| Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query. | [optional]
**expand** | [**List[ExpandAccountGroupOptions]**](ExpandAccountGroupOptions.md)| Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query. | [optional]
### Return type

View File

@ -1,4 +1,4 @@
# Agent
# AgentResponse
## Properties
@ -20,19 +20,19 @@ Name | Type | Description | Notes
## Example
```python
from thousandeyes_sdk.instant_tests.models.agent import Agent
from thousandeyes_sdk.administrative.models.agent_response import AgentResponse
# TODO update the JSON string below
json = "{}"
# create an instance of Agent from a JSON string
agent_instance = Agent.from_json(json)
# create an instance of AgentResponse from a JSON string
agent_response_instance = AgentResponse.from_json(json)
# print the JSON string representation of the object
print(Agent.to_json())
print(AgentResponse.to_json())
# convert the object into a dict
agent_dict = agent_instance.to_dict()
# create an instance of Agent from a dict
agent_from_dict = Agent.from_dict(agent_dict)
agent_response_dict = agent_response_instance.to_dict()
# create an instance of AgentResponse from a dict
agent_response_from_dict = AgentResponse.from_dict(agent_response_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

@ -0,0 +1,11 @@
# ExpandAccountGroupOptions
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -6,6 +6,7 @@ Method | HTTP request | Description
------------- | ------------- | -------------
[**create_user**](UsersApi.md#create_user) | **POST** /users | Create user
[**delete_user**](UsersApi.md#delete_user) | **DELETE** /users/{id} | Delete user
[**get_current_user**](UsersApi.md#get_current_user) | **GET** /users/current | Retrieve current user
[**get_user**](UsersApi.md#get_user) | **GET** /users/{id} | Retrieve user
[**get_users**](UsersApi.md#get_users) | **GET** /users | List users
[**update_user**](UsersApi.md#update_user) | **PUT** /users/{id} | Update user
@ -181,6 +182,86 @@ void (empty response body)
[[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_current_user**
> UserDetail get_current_user()
Retrieve current user
Retrieves detailed information about the current user.
### Example
* Bearer Authentication (BearerAuth):
```python
import thousandeyes_sdk.administrative
from thousandeyes_sdk.administrative.models.user_detail import UserDetail
from thousandeyes_sdk.administrative.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.administrative.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = thousandeyes_sdk.administrative.UsersApi(api_client)
try:
# Retrieve current user
api_response = api_instance.get_current_user()
print("The response of UsersApi->get_current_user:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling UsersApi->get_current_user: %s\n" % e)
```
### Parameters
This endpoint does not need any parameter.
### Return type
[**UserDetail**](UserDetail.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_user**
> UserDetail get_user(id, aid=aid)

View File

@ -9,9 +9,9 @@ description = "ThousandEyes SDK Administrative API"
license = { file = "LICENSE" }
requires-python = ">= 3.8"
dependencies = [
"urllib3 >= 1.25.3",
"urllib3 >= 2.0.0",
"python-dateutil >=2.8.2",
"pydantic >=2",
"pydantic >=2.1.0",
"typing-extensions >=4.7.1",
"thousandeyes-sdk-core",
]

View File

@ -28,8 +28,8 @@ from thousandeyes_sdk.administrative.models.account_group_info import AccountGro
from thousandeyes_sdk.administrative.models.account_group_request import AccountGroupRequest
from thousandeyes_sdk.administrative.models.account_group_role import AccountGroupRole
from thousandeyes_sdk.administrative.models.account_groups import AccountGroups
from thousandeyes_sdk.administrative.models.agent import Agent
from thousandeyes_sdk.administrative.models.agent_base import AgentBase
from thousandeyes_sdk.administrative.models.agent_response import AgentResponse
from thousandeyes_sdk.administrative.models.audit_user_events import AuditUserEvents
from thousandeyes_sdk.administrative.models.base_role import BaseRole
from thousandeyes_sdk.administrative.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType
@ -43,7 +43,7 @@ from thousandeyes_sdk.administrative.models.enterprise_agent_state import Enterp
from thousandeyes_sdk.administrative.models.error import Error
from thousandeyes_sdk.administrative.models.error_detail import ErrorDetail
from thousandeyes_sdk.administrative.models.error_detail_code import ErrorDetailCode
from thousandeyes_sdk.administrative.models.expand import Expand
from thousandeyes_sdk.administrative.models.expand_account_group_options import ExpandAccountGroupOptions
from thousandeyes_sdk.administrative.models.extended_user import ExtendedUser
from thousandeyes_sdk.administrative.models.interface_ip_mapping import InterfaceIpMapping
from thousandeyes_sdk.administrative.models.link import Link

View File

@ -25,7 +25,7 @@ from thousandeyes_sdk.administrative.models.account_group_detail import AccountG
from thousandeyes_sdk.administrative.models.account_group_request import AccountGroupRequest
from thousandeyes_sdk.administrative.models.account_groups import AccountGroups
from thousandeyes_sdk.administrative.models.created_account_group import CreatedAccountGroup
from thousandeyes_sdk.administrative.models.expand import Expand
from thousandeyes_sdk.administrative.models.expand_account_group_options import ExpandAccountGroupOptions
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse
@ -50,7 +50,7 @@ class AccountGroupsApi:
def create_account_group(
self,
account_group_request: AccountGroupRequest,
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
expand: Annotated[Optional[List[ExpandAccountGroupOptions]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -71,7 +71,7 @@ class AccountGroupsApi:
:param account_group_request: (required)
:type account_group_request: AccountGroupRequest
:param expand: Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.
:type expand: List[Expand]
:type expand: List[ExpandAccountGroupOptions]
: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
@ -128,7 +128,7 @@ class AccountGroupsApi:
def create_account_group_with_http_info(
self,
account_group_request: AccountGroupRequest,
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
expand: Annotated[Optional[List[ExpandAccountGroupOptions]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -149,7 +149,7 @@ class AccountGroupsApi:
:param account_group_request: (required)
:type account_group_request: AccountGroupRequest
:param expand: Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.
:type expand: List[Expand]
:type expand: List[ExpandAccountGroupOptions]
: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
@ -206,7 +206,7 @@ class AccountGroupsApi:
def create_account_group_without_preload_content(
self,
account_group_request: AccountGroupRequest,
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
expand: Annotated[Optional[List[ExpandAccountGroupOptions]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -227,7 +227,7 @@ class AccountGroupsApi:
:param account_group_request: (required)
:type account_group_request: AccountGroupRequest
:param expand: Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.
:type expand: List[Expand]
:type expand: List[ExpandAccountGroupOptions]
: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
@ -640,7 +640,7 @@ class AccountGroupsApi:
def get_account_group(
self,
id: Annotated[StrictStr, Field(description="Identifier for the account group.")],
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
expand: Annotated[Optional[List[ExpandAccountGroupOptions]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -661,7 +661,7 @@ class AccountGroupsApi:
:param id: Identifier for the account group. (required)
:type id: str
:param expand: Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.
:type expand: List[Expand]
:type expand: List[ExpandAccountGroupOptions]
: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
@ -718,7 +718,7 @@ class AccountGroupsApi:
def get_account_group_with_http_info(
self,
id: Annotated[StrictStr, Field(description="Identifier for the account group.")],
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
expand: Annotated[Optional[List[ExpandAccountGroupOptions]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -739,7 +739,7 @@ class AccountGroupsApi:
:param id: Identifier for the account group. (required)
:type id: str
:param expand: Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.
:type expand: List[Expand]
:type expand: List[ExpandAccountGroupOptions]
: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
@ -796,7 +796,7 @@ class AccountGroupsApi:
def get_account_group_without_preload_content(
self,
id: Annotated[StrictStr, Field(description="Identifier for the account group.")],
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
expand: Annotated[Optional[List[ExpandAccountGroupOptions]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -817,7 +817,7 @@ class AccountGroupsApi:
:param id: Identifier for the account group. (required)
:type id: str
:param expand: Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.
:type expand: List[Expand]
:type expand: List[ExpandAccountGroupOptions]
: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
@ -1221,7 +1221,7 @@ class AccountGroupsApi:
self,
id: Annotated[StrictStr, Field(description="Identifier for the account group.")],
account_group_request: AccountGroupRequest,
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
expand: Annotated[Optional[List[ExpandAccountGroupOptions]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -1244,7 +1244,7 @@ class AccountGroupsApi:
:param account_group_request: (required)
:type account_group_request: AccountGroupRequest
:param expand: Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.
:type expand: List[Expand]
:type expand: List[ExpandAccountGroupOptions]
: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
@ -1303,7 +1303,7 @@ class AccountGroupsApi:
self,
id: Annotated[StrictStr, Field(description="Identifier for the account group.")],
account_group_request: AccountGroupRequest,
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
expand: Annotated[Optional[List[ExpandAccountGroupOptions]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -1326,7 +1326,7 @@ class AccountGroupsApi:
:param account_group_request: (required)
:type account_group_request: AccountGroupRequest
:param expand: Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.
:type expand: List[Expand]
:type expand: List[ExpandAccountGroupOptions]
: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
@ -1385,7 +1385,7 @@ class AccountGroupsApi:
self,
id: Annotated[StrictStr, Field(description="Identifier for the account group.")],
account_group_request: AccountGroupRequest,
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
expand: Annotated[Optional[List[ExpandAccountGroupOptions]], Field(description="Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -1408,7 +1408,7 @@ class AccountGroupsApi:
:param account_group_request: (required)
:type account_group_request: AccountGroupRequest
:param expand: Optional parameter that specifies whether or not account group related resources should be expanded. By default, no expansion takes place if the query parameter is not passed. For example, to expand the `users` resource, pass the `?expand=user` query.
:type expand: List[Expand]
:type expand: List[ExpandAccountGroupOptions]
: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

View File

@ -651,6 +651,271 @@ class UsersApi:
@validate_call
def get_current_user(
self,
_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,
) -> UserDetail:
"""Retrieve current user
Retrieves detailed information about the current user.
: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_current_user_serialize(
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
_host_index=_host_index
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "UserDetail",
'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.administrative.models,
).data
@validate_call
def get_current_user_with_http_info(
self,
_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[UserDetail]:
"""Retrieve current user
Retrieves detailed information about the current user.
: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_current_user_serialize(
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
_host_index=_host_index
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "UserDetail",
'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.administrative.models,
)
@validate_call
def get_current_user_without_preload_content(
self,
_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 current user
Retrieves detailed information about the current user.
: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_current_user_serialize(
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
_host_index=_host_index
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "UserDetail",
'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_current_user_serialize(
self,
_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
# process the query parameters
# 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='/users/current',
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_user(
self,

View File

@ -19,8 +19,8 @@ from thousandeyes_sdk.administrative.models.account_group_info import AccountGro
from thousandeyes_sdk.administrative.models.account_group_request import AccountGroupRequest
from thousandeyes_sdk.administrative.models.account_group_role import AccountGroupRole
from thousandeyes_sdk.administrative.models.account_groups import AccountGroups
from thousandeyes_sdk.administrative.models.agent import Agent
from thousandeyes_sdk.administrative.models.agent_base import AgentBase
from thousandeyes_sdk.administrative.models.agent_response import AgentResponse
from thousandeyes_sdk.administrative.models.audit_user_events import AuditUserEvents
from thousandeyes_sdk.administrative.models.base_role import BaseRole
from thousandeyes_sdk.administrative.models.cloud_enterprise_agent_type import CloudEnterpriseAgentType
@ -34,7 +34,7 @@ from thousandeyes_sdk.administrative.models.enterprise_agent_state import Enterp
from thousandeyes_sdk.administrative.models.error import Error
from thousandeyes_sdk.administrative.models.error_detail import ErrorDetail
from thousandeyes_sdk.administrative.models.error_detail_code import ErrorDetailCode
from thousandeyes_sdk.administrative.models.expand import Expand
from thousandeyes_sdk.administrative.models.expand_account_group_options import ExpandAccountGroupOptions
from thousandeyes_sdk.administrative.models.extended_user import ExtendedUser
from thousandeyes_sdk.administrative.models.interface_ip_mapping import InterfaceIpMapping
from thousandeyes_sdk.administrative.models.link import Link

View File

@ -36,7 +36,8 @@ class AccountGroupDetail(BaseModel):
users: Optional[List[UserAccountGroup]] = None
links: Optional[SelfLinks] = Field(default=None, alias="_links")
agents: Optional[List[EnterpriseAgent]] = None
__properties: ClassVar[List[str]] = ["aid", "accountGroupName", "isCurrentAccountGroup", "isDefaultAccountGroup", "organizationName", "users", "_links", "agents"]
account_token: Optional[StrictStr] = Field(default=None, description="The account group token is an alphanumeric string used to bind an Enterprise Agent to a specific account group. This token is not a password that must be kept secret. You can retrieve your `AccountGroupToken` from the `/account-groups/{id}` endpoint.", alias="accountToken")
__properties: ClassVar[List[str]] = ["aid", "accountGroupName", "isCurrentAccountGroup", "isDefaultAccountGroup", "organizationName", "users", "_links", "agents", "accountToken"]
model_config = ConfigDict(
populate_by_name=True,
@ -114,7 +115,8 @@ class AccountGroupDetail(BaseModel):
"organizationName": obj.get("organizationName"),
"users": [UserAccountGroup.from_dict(_item) for _item in obj["users"]] if obj.get("users") is not None else None,
"_links": SelfLinks.from_dict(obj["_links"]) if obj.get("_links") is not None else None,
"agents": [EnterpriseAgent.from_dict(_item) for _item in obj["agents"]] if obj.get("agents") is not None else None
"agents": [EnterpriseAgent.from_dict(_item) for _item in obj["agents"]] if obj.get("agents") is not None else None,
"accountToken": obj.get("accountToken")
})
return _obj

View File

@ -22,9 +22,9 @@ from thousandeyes_sdk.administrative.models.cloud_enterprise_agent_type import C
from typing import Optional, Set
from typing_extensions import Self
class Agent(BaseModel):
class AgentResponse(BaseModel):
"""
Agent
AgentResponse
""" # noqa: E501
ip_addresses: Optional[List[StrictStr]] = Field(default=None, description="Array of private IP addresses.", alias="ipAddresses")
public_ip_addresses: Optional[List[StrictStr]] = Field(default=None, description="Array of public IP addresses.", alias="publicIpAddresses")
@ -58,7 +58,7 @@ class Agent(BaseModel):
@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Agent from a JSON string"""
"""Create an instance of AgentResponse from a JSON string"""
return cls.from_dict(json.loads(json_str))
def to_dict(self) -> Dict[str, Any]:
@ -99,7 +99,7 @@ class Agent(BaseModel):
@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of Agent from a dict"""
"""Create an instance of AgentResponse from a dict"""
if obj is None:
return None

View File

@ -28,10 +28,15 @@ class CloudEnterpriseAgentType(str, Enum):
CLOUD = 'cloud'
ENTERPRISE_MINUS_CLUSTER = 'enterprise-cluster'
ENTERPRISE = 'enterprise'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of CloudEnterpriseAgentType from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -28,10 +28,15 @@ class EnterpriseAgentIpv6Policy(str, Enum):
FORCE_MINUS_IPV4 = 'force-ipv4'
PREFER_MINUS_IPV6 = 'prefer-ipv6'
FORCE_MINUS_IPV6 = 'force-ipv6'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of EnterpriseAgentIpv6Policy from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -28,10 +28,15 @@ class EnterpriseAgentState(str, Enum):
ONLINE = 'online'
OFFLINE = 'offline'
DISABLED = 'disabled'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of EnterpriseAgentState from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -33,10 +33,15 @@ class ErrorDetailCode(str, Enum):
OS_MINUS_END_MINUS_OF_MINUS_SUPPORT = 'os-end-of-support'
OS_MINUS_END_MINUS_OF_MINUS_LIFE = 'os-end-of-life'
NAT_MINUS_TRAVERSAL_MINUS_ERROR = 'nat-traversal-error'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of ErrorDetailCode from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -17,9 +17,9 @@ from enum import Enum
from typing_extensions import Self
class Expand(str, Enum):
class ExpandAccountGroupOptions(str, Enum):
"""
Expand
ExpandAccountGroupOptions
"""
"""
@ -27,10 +27,15 @@ class Expand(str, Enum):
"""
USER = 'user'
AGENT = 'agent'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of Expand from a JSON string"""
"""Create an instance of ExpandAccountGroupOptions from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -125,6 +125,7 @@ class TestAccountGroupsApi(unittest.TestCase):
},
"accountGroupName" : "Account A",
"isDefaultAccountGroup" : true,
"accountToken" : "6j052y4vfgyuhefghue",
"aid" : "1234",
"users" : [ {
"uid" : "235",
@ -388,6 +389,7 @@ class TestAccountGroupsApi(unittest.TestCase):
},
"accountGroupName" : "Account A",
"isDefaultAccountGroup" : true,
"accountToken" : "6j052y4vfgyuhefghue",
"aid" : "1234",
"users" : [ {
"uid" : "235",

View File

@ -125,6 +125,82 @@ class TestUsersApi(unittest.TestCase):
"""Test case for delete_user request and response models"""
def test_get_current_user_models_validation(self) -> None:
"""Test case for get_current_user request and response models"""
response_body_json = """
{
"loginAccountGroup" : {
"accountGroupName" : "Account A",
"aid" : "1234"
},
"uid" : "245",
"lastLogin" : "2022-07-17T22:00:54Z",
"allAccountGroupRoles" : [ {
"roleId" : "35",
"name" : "Organization Admin",
"isBuiltin" : true,
"hasManagementPermissions" : true
}, {
"roleId" : "35",
"name" : "Organization Admin",
"isBuiltin" : true,
"hasManagementPermissions" : true
} ],
"_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"
}
},
"accountGroupRoles" : [ {
"roles" : [ {
"roleId" : "35",
"name" : "Organization Admin",
"isBuiltin" : true,
"hasManagementPermissions" : true
}, {
"roleId" : "35",
"name" : "Organization Admin",
"isBuiltin" : true,
"hasManagementPermissions" : true
} ],
"accountGroup" : {
"accountGroupName" : "Account A",
"aid" : "1234"
}
}, {
"roles" : [ {
"roleId" : "35",
"name" : "Organization Admin",
"isBuiltin" : true,
"hasManagementPermissions" : true
}, {
"roleId" : "35",
"name" : "Organization Admin",
"isBuiltin" : true,
"hasManagementPermissions" : true
} ],
"accountGroup" : {
"accountGroupName" : "Account A",
"aid" : "1234"
}
} ],
"name" : "User X",
"email" : "userx@thousandeyes.com",
"dateRegistered" : "2020-07-17T22:00:54Z"
}"""
response_loaded_json = json.loads(response_body_json)
response_from_json = thousandeyes_sdk.administrative.models.UserDetail.from_json(response_body_json)
assert_constructed_model_matches_example_json(response_from_json, response_loaded_json)
def test_get_user_models_validation(self) -> None:
"""Test case for get_user request and response models"""

View File

@ -2,17 +2,20 @@
MANIFEST.in
README.md
docs/AccountGroup.md
docs/Agent.md
docs/AgentBase.md
docs/AgentClusterAssignRequest.md
docs/AgentClusterUnassignRequest.md
docs/AgentDetails.md
docs/AgentDetailsExpand.md
docs/AgentIpv6Policy.md
docs/AgentLabel.md
docs/AgentListExpand.md
docs/AgentNotification.md
docs/AgentProxies.md
docs/AgentProxiesApi.md
docs/AgentProxy.md
docs/AgentRequest.md
docs/AgentResponse.md
docs/AlertEmail.md
docs/AlertIntegrationBase.md
docs/AlertIntegrationType.md
@ -35,14 +38,11 @@ docs/Error.md
docs/ErrorDetail.md
docs/ErrorDetailCode.md
docs/InterfaceIpMapping.md
docs/Labels.md
docs/Link.md
docs/ListNotificationRulesResponse.md
docs/Notification.md
docs/NotificationRule.md
docs/NotificationRuleDetail.md
docs/NotificationRules.md
docs/ProxiesApi.md
docs/ProxyAuthType.md
docs/ProxyType.md
docs/SelfLinks.md
@ -60,23 +60,25 @@ pyproject.toml
setup.cfg
src/thousandeyes_sdk/agents/__init__.py
src/thousandeyes_sdk/agents/api/__init__.py
src/thousandeyes_sdk/agents/api/agent_proxies_api.py
src/thousandeyes_sdk/agents/api/cloud_and_enterprise_agent_notification_rules_api.py
src/thousandeyes_sdk/agents/api/cloud_and_enterprise_agents_api.py
src/thousandeyes_sdk/agents/api/enterprise_agent_cluster_api.py
src/thousandeyes_sdk/agents/api/proxies_api.py
src/thousandeyes_sdk/agents/models/__init__.py
src/thousandeyes_sdk/agents/models/account_group.py
src/thousandeyes_sdk/agents/models/agent.py
src/thousandeyes_sdk/agents/models/agent_base.py
src/thousandeyes_sdk/agents/models/agent_cluster_assign_request.py
src/thousandeyes_sdk/agents/models/agent_cluster_unassign_request.py
src/thousandeyes_sdk/agents/models/agent_details.py
src/thousandeyes_sdk/agents/models/agent_details_expand.py
src/thousandeyes_sdk/agents/models/agent_ipv6_policy.py
src/thousandeyes_sdk/agents/models/agent_label.py
src/thousandeyes_sdk/agents/models/agent_list_expand.py
src/thousandeyes_sdk/agents/models/agent_notification.py
src/thousandeyes_sdk/agents/models/agent_proxies.py
src/thousandeyes_sdk/agents/models/agent_proxy.py
src/thousandeyes_sdk/agents/models/agent_request.py
src/thousandeyes_sdk/agents/models/agent_response.py
src/thousandeyes_sdk/agents/models/alert_email.py
src/thousandeyes_sdk/agents/models/alert_integration_base.py
src/thousandeyes_sdk/agents/models/alert_integration_type.py
@ -96,10 +98,8 @@ src/thousandeyes_sdk/agents/models/error.py
src/thousandeyes_sdk/agents/models/error_detail.py
src/thousandeyes_sdk/agents/models/error_detail_code.py
src/thousandeyes_sdk/agents/models/interface_ip_mapping.py
src/thousandeyes_sdk/agents/models/labels.py
src/thousandeyes_sdk/agents/models/link.py
src/thousandeyes_sdk/agents/models/list_notification_rules_response.py
src/thousandeyes_sdk/agents/models/notification.py
src/thousandeyes_sdk/agents/models/notification_rule.py
src/thousandeyes_sdk/agents/models/notification_rule_detail.py
src/thousandeyes_sdk/agents/models/notification_rules.py
@ -118,8 +118,8 @@ src/thousandeyes_sdk/agents/models/validation_error.py
src/thousandeyes_sdk/agents/models/validation_error_item.py
src/thousandeyes_sdk/agents/py.typed
test/__init__.py
test/test_agent_proxies_api.py
test/test_cloud_and_enterprise_agent_notification_rules_api.py
test/test_cloud_and_enterprise_agents_api.py
test/test_enterprise_agent_cluster_api.py
test/test_proxies_api.py
test/test_utils.py

View File

@ -5,7 +5,7 @@ Manage all agents available to your account in ThousandEyes, including both Clou
This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 7.0.15
- API version: 7.0.19
- Generator version: 7.6.0
- Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator
@ -77,17 +77,16 @@ configuration = thousandeyes_sdk.core.Configuration(
# 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.agents.CloudAndEnterpriseAgentNotificationRulesApi(api_client)
notification_rule_id = '281474976710706' # str | Unique ID for the agent notification rule.
api_instance = thousandeyes_sdk.agents.AgentProxiesApi(api_client)
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)
try:
# Retrieve agent notification rule
api_response = api_instance.get_agents_notification_rule(notification_rule_id, aid=aid)
print("The response of CloudAndEnterpriseAgentNotificationRulesApi->get_agents_notification_rule:\n")
# List agent proxies
api_response = api_instance.get_agents_proxies(aid=aid)
print("The response of AgentProxiesApi->get_agents_proxies:\n")
pprint(api_response)
except ApiException as e:
print("Exception when calling CloudAndEnterpriseAgentNotificationRulesApi->get_agents_notification_rule: %s\n" % e)
print("Exception when calling AgentProxiesApi->get_agents_proxies: %s\n" % e)
```
@ -97,6 +96,7 @@ All URIs are relative to *https://api.thousandeyes.com/v7*
Class | Method | HTTP request | Description
------------ | ------------- | ------------- | -------------
*AgentProxiesApi* | [**get_agents_proxies**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AgentProxiesApi.md#get_agents_proxies) | **GET** /agents/proxies | List agent proxies
*CloudAndEnterpriseAgentNotificationRulesApi* | [**get_agents_notification_rule**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/CloudAndEnterpriseAgentNotificationRulesApi.md#get_agents_notification_rule) | **GET** /agents/notification-rules/{notificationRuleId} | Retrieve agent notification rule
*CloudAndEnterpriseAgentNotificationRulesApi* | [**get_agents_notification_rules**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/CloudAndEnterpriseAgentNotificationRulesApi.md#get_agents_notification_rules) | **GET** /agents/notification-rules | List agent notification rules
*CloudAndEnterpriseAgentsApi* | [**delete_agent**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/CloudAndEnterpriseAgentsApi.md#delete_agent) | **DELETE** /agents/{agentId} | Delete Enterprise Agent
@ -105,23 +105,24 @@ Class | Method | HTTP request | Description
*CloudAndEnterpriseAgentsApi* | [**update_agent**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/CloudAndEnterpriseAgentsApi.md#update_agent) | **PUT** /agents/{agentId} | Update Enterprise Agent
*EnterpriseAgentClusterApi* | [**assign_agent_to_cluster**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/EnterpriseAgentClusterApi.md#assign_agent_to_cluster) | **POST** /agents/{agentId}/cluster/assign | Add member to Enterprise Agent cluster
*EnterpriseAgentClusterApi* | [**unassign_agent_from_cluster**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/EnterpriseAgentClusterApi.md#unassign_agent_from_cluster) | **POST** /agents/{agentId}/cluster/unassign | Remove member from Enterprise Agent cluster
*ProxiesApi* | [**get_agents_proxies**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/ProxiesApi.md#get_agents_proxies) | **GET** /agents/proxies | List agent proxies
## Documentation For Models
- [AccountGroup](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AccountGroup.md)
- [Agent](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/Agent.md)
- [AgentBase](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AgentBase.md)
- [AgentClusterAssignRequest](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AgentClusterAssignRequest.md)
- [AgentClusterUnassignRequest](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AgentClusterUnassignRequest.md)
- [AgentDetails](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AgentDetails.md)
- [AgentDetailsExpand](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AgentDetailsExpand.md)
- [AgentIpv6Policy](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AgentIpv6Policy.md)
- [AgentLabel](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AgentLabel.md)
- [AgentListExpand](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AgentListExpand.md)
- [AgentNotification](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AgentNotification.md)
- [AgentProxies](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AgentProxies.md)
- [AgentProxy](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AgentProxy.md)
- [AgentRequest](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AgentRequest.md)
- [AgentResponse](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AgentResponse.md)
- [AlertEmail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AlertEmail.md)
- [AlertIntegrationBase](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AlertIntegrationBase.md)
- [AlertIntegrationType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/AlertIntegrationType.md)
@ -141,10 +142,8 @@ Class | Method | HTTP request | Description
- [ErrorDetail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/ErrorDetail.md)
- [ErrorDetailCode](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/ErrorDetailCode.md)
- [InterfaceIpMapping](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/InterfaceIpMapping.md)
- [Labels](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/Labels.md)
- [Link](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/Link.md)
- [ListNotificationRulesResponse](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/ListNotificationRulesResponse.md)
- [Notification](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/Notification.md)
- [NotificationRule](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/NotificationRule.md)
- [NotificationRuleDetail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/NotificationRuleDetail.md)
- [NotificationRules](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-agents/docs/NotificationRules.md)

View File

@ -17,7 +17,7 @@ Name | Type | Description | Notes
**verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests. | [optional] [readonly]
**agent_type** | **str** | Enterprise Cluster agent type. |
**tests** | [**List[SimpleTest]**](SimpleTest.md) | List of tests. See `/tests` for more information. | [optional]
**labels** | [**List[Labels]**](Labels.md) | List of labels. See `/labels` for more information. | [optional] [readonly]
**labels** | [**List[AgentLabel]**](AgentLabel.md) | List of labels. See `/labels` for more information. | [optional] [readonly]
**links** | [**SelfLinks**](SelfLinks.md) | | [optional]
**cluster_members** | [**List[ClusterMember]**](ClusterMember.md) | If an enterprise agent is clustered, detailed information about each cluster member will be shown as array entries in the clusterMembers field. This field is not shown for Enterprise Agents in standalone mode, or for Cloud Agents. | [optional] [readonly]
**utilization** | **int** | Shows overall utilization percentage (online Enterprise Agents and Enterprise Clusters only). | [optional] [readonly]

View File

@ -1,4 +1,4 @@
# Labels
# AgentLabel
## Properties
@ -11,19 +11,19 @@ Name | Type | Description | Notes
## Example
```python
from thousandeyes_sdk.agents.models.labels import Labels
from thousandeyes_sdk.agents.models.agent_label import AgentLabel
# TODO update the JSON string below
json = "{}"
# create an instance of Labels from a JSON string
labels_instance = Labels.from_json(json)
# create an instance of AgentLabel from a JSON string
agent_label_instance = AgentLabel.from_json(json)
# print the JSON string representation of the object
print(Labels.to_json())
print(AgentLabel.to_json())
# convert the object into a dict
labels_dict = labels_instance.to_dict()
# create an instance of Labels from a dict
labels_from_dict = Labels.from_dict(labels_dict)
agent_label_dict = agent_label_instance.to_dict()
# create an instance of AgentLabel from a dict
agent_label_from_dict = AgentLabel.from_dict(agent_label_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

@ -1,4 +1,4 @@
# Notification
# AgentNotification
Alert notification object.
@ -13,19 +13,19 @@ Name | Type | Description | Notes
## Example
```python
from thousandeyes_sdk.agents.models.notification import Notification
from thousandeyes_sdk.agents.models.agent_notification import AgentNotification
# TODO update the JSON string below
json = "{}"
# create an instance of Notification from a JSON string
notification_instance = Notification.from_json(json)
# create an instance of AgentNotification from a JSON string
agent_notification_instance = AgentNotification.from_json(json)
# print the JSON string representation of the object
print(Notification.to_json())
print(AgentNotification.to_json())
# convert the object into a dict
notification_dict = notification_instance.to_dict()
# create an instance of Notification from a dict
notification_from_dict = Notification.from_dict(notification_dict)
agent_notification_dict = agent_notification_instance.to_dict()
# create an instance of AgentNotification from a dict
agent_notification_from_dict = AgentNotification.from_dict(agent_notification_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

@ -1,10 +1,10 @@
# thousandeyes_sdk.agents.ProxiesApi
# thousandeyes_sdk.agents.AgentProxiesApi
All URIs are relative to *https://api.thousandeyes.com/v7*
Method | HTTP request | Description
------------- | ------------- | -------------
[**get_agents_proxies**](ProxiesApi.md#get_agents_proxies) | **GET** /agents/proxies | List agent proxies
[**get_agents_proxies**](AgentProxiesApi.md#get_agents_proxies) | **GET** /agents/proxies | List agent proxies
# **get_agents_proxies**
@ -43,16 +43,16 @@ configuration = thousandeyes_sdk.core.Configuration(
# Enter a context with an instance of the API client
with thousandeyes_sdk.agents.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = thousandeyes_sdk.agents.ProxiesApi(api_client)
api_instance = thousandeyes_sdk.agents.AgentProxiesApi(api_client)
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)
try:
# List agent proxies
api_response = api_instance.get_agents_proxies(aid=aid)
print("The response of ProxiesApi->get_agents_proxies:\n")
print("The response of AgentProxiesApi->get_agents_proxies:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ProxiesApi->get_agents_proxies: %s\n" % e)
print("Exception when calling AgentProxiesApi->get_agents_proxies: %s\n" % e)
```

View File

@ -1,4 +1,4 @@
# Agent
# AgentResponse
## Properties
@ -20,19 +20,19 @@ Name | Type | Description | Notes
## Example
```python
from thousandeyes_sdk.agents.models.agent import Agent
from thousandeyes_sdk.agents.models.agent_response import AgentResponse
# TODO update the JSON string below
json = "{}"
# create an instance of Agent from a JSON string
agent_instance = Agent.from_json(json)
# create an instance of AgentResponse from a JSON string
agent_response_instance = AgentResponse.from_json(json)
# print the JSON string representation of the object
print(Agent.to_json())
print(AgentResponse.to_json())
# convert the object into a dict
agent_dict = agent_instance.to_dict()
# create an instance of Agent from a dict
agent_from_dict = Agent.from_dict(agent_dict)
agent_response_dict = agent_response_instance.to_dict()
# create an instance of AgentResponse from a dict
agent_response_from_dict = AgentResponse.from_dict(agent_response_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

@ -17,7 +17,7 @@ Name | Type | Description | Notes
**verify_ssl_certificates** | **bool** | Flag indicating if has normal SSL operations or if instead it's set to ignore SSL errors on browserbot-based tests. | [optional] [readonly]
**agent_type** | **str** | Cloud agent type. |
**tests** | [**List[SimpleTest]**](SimpleTest.md) | List of tests. See `/tests` for more information. | [optional]
**labels** | [**List[Labels]**](Labels.md) | List of labels - see `/labels` for more information. | [optional] [readonly]
**labels** | [**List[AgentLabel]**](AgentLabel.md) | List of labels - see `/labels` for more information. | [optional] [readonly]
**links** | [**SelfLinks**](SelfLinks.md) | | [optional]
## Example

View File

@ -30,7 +30,7 @@ Name | Type | Description | Notes
**interface_ip_mappings** | [**List[InterfaceIpMapping]**](InterfaceIpMapping.md) | | [optional] [readonly]
**tests** | [**List[SimpleTest]**](SimpleTest.md) | List of tests. See `/tests` for more information. | [optional]
**notification_rules** | [**List[NotificationRules]**](NotificationRules.md) | List of notification rule objects configured on agent | [optional]
**labels** | [**List[Labels]**](Labels.md) | List of labels. See `/labels` for more information. | [optional] [readonly]
**labels** | [**List[AgentLabel]**](AgentLabel.md) | List of labels. See `/labels` for more information. | [optional] [readonly]
**agent_type** | **str** | Enterprise Cluster agent type. |
**links** | [**SelfLinks**](SelfLinks.md) | | [optional]

View File

@ -30,7 +30,7 @@ Name | Type | Description | Notes
**interface_ip_mappings** | [**List[InterfaceIpMapping]**](InterfaceIpMapping.md) | | [optional] [readonly]
**tests** | [**List[SimpleTest]**](SimpleTest.md) | List of tests. See `/tests` for more information. | [optional]
**notification_rules** | [**List[NotificationRules]**](NotificationRules.md) | List of notification rule objects configured on agent | [optional]
**labels** | [**List[Labels]**](Labels.md) | List of labels. See `/labels` for more information. | [optional] [readonly]
**labels** | [**List[AgentLabel]**](AgentLabel.md) | List of labels. See `/labels` for more information. | [optional] [readonly]
**agent_type** | **str** | Enterprise agent type. |
**links** | [**SelfLinks**](SelfLinks.md) | | [optional]

View File

@ -7,7 +7,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**tests** | [**List[SimpleTest]**](SimpleTest.md) | List of tests. See `/tests` for more information. | [optional]
**notification_rules** | [**List[NotificationRules]**](NotificationRules.md) | List of notification rule objects configured on agent | [optional]
**labels** | [**List[Labels]**](Labels.md) | List of labels. See `/labels` for more information. | [optional] [readonly]
**labels** | [**List[AgentLabel]**](AgentLabel.md) | List of labels. See `/labels` for more information. | [optional] [readonly]
## Example

View File

@ -10,8 +10,8 @@ Name | Type | Description | Notes
**expression** | **str** | Expression of agent notification rule | [optional]
**notify_on_clear** | **bool** | Send notification when notification clears | [optional]
**is_default** | **bool** | Agent notification rule will be automatically included on all new Enterprise Agents. | [optional]
**notifications** | [**Notification**](Notification.md) | | [optional]
**agents** | [**List[Agent]**](Agent.md) | | [optional]
**notifications** | [**AgentNotification**](AgentNotification.md) | | [optional]
**agents** | [**List[AgentResponse]**](AgentResponse.md) | | [optional]
**links** | [**SelfLinks**](SelfLinks.md) | | [optional]
## Example

View File

@ -9,9 +9,9 @@ description = "ThousandEyes SDK Agents API"
license = { file = "LICENSE" }
requires-python = ">= 3.8"
dependencies = [
"urllib3 >= 1.25.3",
"urllib3 >= 2.0.0",
"python-dateutil >=2.8.2",
"pydantic >=2",
"pydantic >=2.1.0",
"typing-extensions >=4.7.1",
"thousandeyes-sdk-core",
]

View File

@ -14,25 +14,27 @@
# import apis into sdk package
from thousandeyes_sdk.agents.api.agent_proxies_api import AgentProxiesApi
from thousandeyes_sdk.agents.api.cloud_and_enterprise_agent_notification_rules_api import CloudAndEnterpriseAgentNotificationRulesApi
from thousandeyes_sdk.agents.api.cloud_and_enterprise_agents_api import CloudAndEnterpriseAgentsApi
from thousandeyes_sdk.agents.api.enterprise_agent_cluster_api import EnterpriseAgentClusterApi
from thousandeyes_sdk.agents.api.proxies_api import ProxiesApi
# import models into sdk package
from thousandeyes_sdk.agents.models.account_group import AccountGroup
from thousandeyes_sdk.agents.models.agent import Agent
from thousandeyes_sdk.agents.models.agent_base import AgentBase
from thousandeyes_sdk.agents.models.agent_cluster_assign_request import AgentClusterAssignRequest
from thousandeyes_sdk.agents.models.agent_cluster_unassign_request import AgentClusterUnassignRequest
from thousandeyes_sdk.agents.models.agent_details import AgentDetails
from thousandeyes_sdk.agents.models.agent_details_expand import AgentDetailsExpand
from thousandeyes_sdk.agents.models.agent_ipv6_policy import AgentIpv6Policy
from thousandeyes_sdk.agents.models.agent_label import AgentLabel
from thousandeyes_sdk.agents.models.agent_list_expand import AgentListExpand
from thousandeyes_sdk.agents.models.agent_notification import AgentNotification
from thousandeyes_sdk.agents.models.agent_proxies import AgentProxies
from thousandeyes_sdk.agents.models.agent_proxy import AgentProxy
from thousandeyes_sdk.agents.models.agent_request import AgentRequest
from thousandeyes_sdk.agents.models.agent_response import AgentResponse
from thousandeyes_sdk.agents.models.alert_email import AlertEmail
from thousandeyes_sdk.agents.models.alert_integration_base import AlertIntegrationBase
from thousandeyes_sdk.agents.models.alert_integration_type import AlertIntegrationType
@ -52,10 +54,8 @@ from thousandeyes_sdk.agents.models.error import Error
from thousandeyes_sdk.agents.models.error_detail import ErrorDetail
from thousandeyes_sdk.agents.models.error_detail_code import ErrorDetailCode
from thousandeyes_sdk.agents.models.interface_ip_mapping import InterfaceIpMapping
from thousandeyes_sdk.agents.models.labels import Labels
from thousandeyes_sdk.agents.models.link import Link
from thousandeyes_sdk.agents.models.list_notification_rules_response import ListNotificationRulesResponse
from thousandeyes_sdk.agents.models.notification import Notification
from thousandeyes_sdk.agents.models.notification_rule import NotificationRule
from thousandeyes_sdk.agents.models.notification_rule_detail import NotificationRuleDetail
from thousandeyes_sdk.agents.models.notification_rules import NotificationRules

View File

@ -1,8 +1,8 @@
# flake8: noqa
# import apis into api package
from thousandeyes_sdk.agents.api.agent_proxies_api import AgentProxiesApi
from thousandeyes_sdk.agents.api.cloud_and_enterprise_agent_notification_rules_api import CloudAndEnterpriseAgentNotificationRulesApi
from thousandeyes_sdk.agents.api.cloud_and_enterprise_agents_api import CloudAndEnterpriseAgentsApi
from thousandeyes_sdk.agents.api.enterprise_agent_cluster_api import EnterpriseAgentClusterApi
from thousandeyes_sdk.agents.api.proxies_api import ProxiesApi

View File

@ -28,7 +28,7 @@ from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType
class ProxiesApi:
class AgentProxiesApi:
"""NOTE: This class is auto generated by OpenAPI Generator
Ref: https://openapi-generator.tech

View File

@ -14,17 +14,19 @@
# import models into model package
from thousandeyes_sdk.agents.models.account_group import AccountGroup
from thousandeyes_sdk.agents.models.agent import Agent
from thousandeyes_sdk.agents.models.agent_base import AgentBase
from thousandeyes_sdk.agents.models.agent_cluster_assign_request import AgentClusterAssignRequest
from thousandeyes_sdk.agents.models.agent_cluster_unassign_request import AgentClusterUnassignRequest
from thousandeyes_sdk.agents.models.agent_details import AgentDetails
from thousandeyes_sdk.agents.models.agent_details_expand import AgentDetailsExpand
from thousandeyes_sdk.agents.models.agent_ipv6_policy import AgentIpv6Policy
from thousandeyes_sdk.agents.models.agent_label import AgentLabel
from thousandeyes_sdk.agents.models.agent_list_expand import AgentListExpand
from thousandeyes_sdk.agents.models.agent_notification import AgentNotification
from thousandeyes_sdk.agents.models.agent_proxies import AgentProxies
from thousandeyes_sdk.agents.models.agent_proxy import AgentProxy
from thousandeyes_sdk.agents.models.agent_request import AgentRequest
from thousandeyes_sdk.agents.models.agent_response import AgentResponse
from thousandeyes_sdk.agents.models.alert_email import AlertEmail
from thousandeyes_sdk.agents.models.alert_integration_base import AlertIntegrationBase
from thousandeyes_sdk.agents.models.alert_integration_type import AlertIntegrationType
@ -44,10 +46,8 @@ from thousandeyes_sdk.agents.models.error import Error
from thousandeyes_sdk.agents.models.error_detail import ErrorDetail
from thousandeyes_sdk.agents.models.error_detail_code import ErrorDetailCode
from thousandeyes_sdk.agents.models.interface_ip_mapping import InterfaceIpMapping
from thousandeyes_sdk.agents.models.labels import Labels
from thousandeyes_sdk.agents.models.link import Link
from thousandeyes_sdk.agents.models.list_notification_rules_response import ListNotificationRulesResponse
from thousandeyes_sdk.agents.models.notification import Notification
from thousandeyes_sdk.agents.models.notification_rule import NotificationRule
from thousandeyes_sdk.agents.models.notification_rule_detail import NotificationRuleDetail
from thousandeyes_sdk.agents.models.notification_rules import NotificationRules

View File

@ -28,10 +28,15 @@ class AgentDetailsExpand(str, Enum):
CLUSTER_MINUS_MEMBER = 'cluster-member'
TEST = 'test'
NOTIFICATION_MINUS_RULE = 'notification-rule'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of AgentDetailsExpand from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -28,10 +28,15 @@ class AgentIpv6Policy(str, Enum):
FORCE_MINUS_IPV4 = 'force-ipv4'
PREFER_MINUS_IPV6 = 'prefer-ipv6'
FORCE_MINUS_IPV6 = 'force-ipv6'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of AgentIpv6Policy from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -21,9 +21,9 @@ from typing import Any, ClassVar, Dict, List, Optional
from typing import Optional, Set
from typing_extensions import Self
class Labels(BaseModel):
class AgentLabel(BaseModel):
"""
Labels
AgentLabel
""" # noqa: E501
label_id: Optional[StrictStr] = Field(default=None, description="Label Id.", alias="labelId")
name: Optional[StrictStr] = Field(default=None, description="Name of the label.")
@ -48,7 +48,7 @@ class Labels(BaseModel):
@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Labels from a JSON string"""
"""Create an instance of AgentLabel from a JSON string"""
return cls.from_dict(json.loads(json_str))
def to_dict(self) -> Dict[str, Any]:
@ -73,7 +73,7 @@ class Labels(BaseModel):
@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of Labels from a dict"""
"""Create an instance of AgentLabel from a dict"""
if obj is None:
return None

View File

@ -26,10 +26,15 @@ class AgentListExpand(str, Enum):
allowed enum values
"""
CLUSTER_MINUS_MEMBER = 'cluster-member'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of AgentListExpand from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -23,7 +23,7 @@ from thousandeyes_sdk.agents.models.alert_integration_base import AlertIntegrati
from typing import Optional, Set
from typing_extensions import Self
class Notification(BaseModel):
class AgentNotification(BaseModel):
"""
Alert notification object.
""" # noqa: E501
@ -51,7 +51,7 @@ class Notification(BaseModel):
@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Notification from a JSON string"""
"""Create an instance of AgentNotification from a JSON string"""
return cls.from_dict(json.loads(json_str))
def to_dict(self) -> Dict[str, Any]:
@ -93,7 +93,7 @@ class Notification(BaseModel):
@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of Notification from a dict"""
"""Create an instance of AgentNotification from a dict"""
if obj is None:
return None

View File

@ -22,9 +22,9 @@ from thousandeyes_sdk.agents.models.cloud_enterprise_agent_type import CloudEnte
from typing import Optional, Set
from typing_extensions import Self
class Agent(BaseModel):
class AgentResponse(BaseModel):
"""
Agent
AgentResponse
""" # noqa: E501
ip_addresses: Optional[List[StrictStr]] = Field(default=None, description="Array of private IP addresses.", alias="ipAddresses")
public_ip_addresses: Optional[List[StrictStr]] = Field(default=None, description="Array of public IP addresses.", alias="publicIpAddresses")
@ -58,7 +58,7 @@ class Agent(BaseModel):
@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Agent from a JSON string"""
"""Create an instance of AgentResponse from a JSON string"""
return cls.from_dict(json.loads(json_str))
def to_dict(self) -> Dict[str, Any]:
@ -99,7 +99,7 @@ class Agent(BaseModel):
@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of Agent from a dict"""
"""Create an instance of AgentResponse from a dict"""
if obj is None:
return None

View File

@ -27,10 +27,15 @@ class AlertIntegrationType(str, Enum):
"""
PAGER_MINUS_DUTY = 'pager-duty'
SLACK = 'slack'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of AlertIntegrationType from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -19,7 +19,7 @@ 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.agents.models.labels import Labels
from thousandeyes_sdk.agents.models.agent_label import AgentLabel
from thousandeyes_sdk.agents.models.self_links import SelfLinks
from thousandeyes_sdk.agents.models.simple_test import SimpleTest
from typing import Optional, Set
@ -41,7 +41,7 @@ class CloudAgentDetail(BaseModel):
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: Annotated[str, Field(strict=True)] = Field(description="Cloud agent type.", alias="agentType")
tests: Optional[List[SimpleTest]] = Field(default=None, description="List of tests. See `/tests` for more information.")
labels: Optional[List[Labels]] = 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")
__properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "enabled", "prefix", "verifySslCertificates", "agentType", "tests", "labels", "_links"]
@ -151,7 +151,7 @@ class CloudAgentDetail(BaseModel):
"verifySslCertificates": obj.get("verifySslCertificates"),
"agentType": obj.get("agentType"),
"tests": [SimpleTest.from_dict(_item) for _item in obj["tests"]] if obj.get("tests") is not None else None,
"labels": [Labels.from_dict(_item) for _item in obj["labels"]] if obj.get("labels") is not None else None,
"labels": [AgentLabel.from_dict(_item) for _item in obj["labels"]] if obj.get("labels") is not None else None,
"_links": SelfLinks.from_dict(obj["_links"]) if obj.get("_links") is not None else None
})
return _obj

View File

@ -18,28 +18,28 @@ import pprint
import re # noqa: F401
from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator
from typing import Optional
from thousandeyes_sdk.agents.models.agent import Agent
from thousandeyes_sdk.agents.models.agent_response import AgentResponse
from thousandeyes_sdk.agents.models.enterprise_agent import EnterpriseAgent
from typing import Union, Any, List, Set, TYPE_CHECKING, Optional, Dict
from typing_extensions import Literal, Self
from pydantic import Field, model_serializer
CLOUDENTERPRISEAGENT_ANY_OF_SCHEMAS = ["Agent", "EnterpriseAgent"]
CLOUDENTERPRISEAGENT_ANY_OF_SCHEMAS = ["AgentResponse", "EnterpriseAgent"]
class CloudEnterpriseAgent(BaseModel):
"""
CloudEnterpriseAgent
"""
# data type: Agent
anyof_schema_1_validator: Optional[Agent] = None
# data type: AgentResponse
anyof_schema_1_validator: Optional[AgentResponse] = None
# data type: EnterpriseAgent
anyof_schema_2_validator: Optional[EnterpriseAgent] = None
if TYPE_CHECKING:
actual_instance: Optional[Union[Agent, EnterpriseAgent]] = None
actual_instance: Optional[Union[AgentResponse, EnterpriseAgent]] = None
else:
actual_instance: Any = None
any_of_schemas: Set[str] = { "Agent", "EnterpriseAgent" }
any_of_schemas: Set[str] = { "AgentResponse", "EnterpriseAgent" }
model_config = {
"validate_assignment": True,
@ -60,9 +60,9 @@ class CloudEnterpriseAgent(BaseModel):
def actual_instance_must_validate_anyof(cls, v):
instance = CloudEnterpriseAgent.model_construct()
error_messages = []
# validate data type: Agent
if not isinstance(v, Agent):
error_messages.append(f"Error! Input type `{type(v)}` is not `Agent`")
# validate data type: AgentResponse
if not isinstance(v, AgentResponse):
error_messages.append(f"Error! Input type `{type(v)}` is not `AgentResponse`")
else:
return v
@ -74,7 +74,7 @@ class CloudEnterpriseAgent(BaseModel):
if error_messages:
# no match
raise ValueError("No match found when setting the actual_instance in CloudEnterpriseAgent with anyOf schemas: Agent, EnterpriseAgent. Details: " + ", ".join(error_messages))
raise ValueError("No match found when setting the actual_instance in CloudEnterpriseAgent with anyOf schemas: AgentResponse, EnterpriseAgent. Details: " + ", ".join(error_messages))
else:
return v
@ -87,9 +87,9 @@ class CloudEnterpriseAgent(BaseModel):
"""Returns the object represented by the json string"""
instance = cls.model_construct()
error_messages = []
# anyof_schema_1_validator: Optional[Agent] = None
# anyof_schema_1_validator: Optional[AgentResponse] = None
try:
instance.actual_instance = Agent.from_json(json_str)
instance.actual_instance = AgentResponse.from_json(json_str)
return instance
except (ValidationError, ValueError) as e:
error_messages.append(str(e))
@ -102,7 +102,7 @@ class CloudEnterpriseAgent(BaseModel):
if error_messages:
# no match
raise ValueError("No match found when deserializing the JSON string into CloudEnterpriseAgent with anyOf schemas: Agent, EnterpriseAgent. Details: " + ", ".join(error_messages))
raise ValueError("No match found when deserializing the JSON string into CloudEnterpriseAgent with anyOf schemas: AgentResponse, EnterpriseAgent. Details: " + ", ".join(error_messages))
else:
return instance
@ -120,7 +120,7 @@ class CloudEnterpriseAgent(BaseModel):
else:
return json.dumps(self.actual_instance)
def to_dict(self) -> Optional[Union[Dict[str, Any], Agent, EnterpriseAgent]]:
def to_dict(self) -> Optional[Union[Dict[str, Any], AgentResponse, EnterpriseAgent]]:
"""Returns the dict representation of the actual instance"""
if self.actual_instance is None:
return None

View File

@ -28,10 +28,15 @@ class CloudEnterpriseAgentType(str, Enum):
CLOUD = 'cloud'
ENTERPRISE_MINUS_CLUSTER = 'enterprise-cluster'
ENTERPRISE = 'enterprise'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of CloudEnterpriseAgentType from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -21,12 +21,12 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, Strict
from typing import Any, ClassVar, Dict, List, Optional
from typing_extensions import Annotated
from thousandeyes_sdk.agents.models.account_group import AccountGroup
from thousandeyes_sdk.agents.models.agent_label import AgentLabel
from thousandeyes_sdk.agents.models.cluster_member import ClusterMember
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.error_detail import ErrorDetail
from thousandeyes_sdk.agents.models.interface_ip_mapping import InterfaceIpMapping
from thousandeyes_sdk.agents.models.labels import Labels
from thousandeyes_sdk.agents.models.notification_rules import NotificationRules
from thousandeyes_sdk.agents.models.self_links import SelfLinks
from thousandeyes_sdk.agents.models.simple_test import SimpleTest
@ -62,7 +62,7 @@ class EnterpriseAgentClusterDetail(BaseModel):
interface_ip_mappings: Optional[List[InterfaceIpMapping]] = Field(default=None, alias="interfaceIpMappings")
tests: Optional[List[SimpleTest]] = Field(default=None, description="List of tests. See `/tests` for more information.")
notification_rules: Optional[List[NotificationRules]] = Field(default=None, description="List of notification rule objects configured on agent", alias="notificationRules")
labels: Optional[List[Labels]] = 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")
links: Optional[SelfLinks] = Field(default=None, alias="_links")
__properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "enabled", "prefix", "verifySslCertificates", "clusterMembers", "utilization", "accountGroups", "ipv6Policy", "errorDetails", "hostname", "lastSeen", "agentState", "keepBrowserCache", "createdDate", "targetForTests", "localResolutionPrefixes", "interfaceIpMappings", "tests", "notificationRules", "labels", "agentType", "_links"]
@ -235,7 +235,7 @@ class EnterpriseAgentClusterDetail(BaseModel):
"interfaceIpMappings": [InterfaceIpMapping.from_dict(_item) for _item in obj["interfaceIpMappings"]] if obj.get("interfaceIpMappings") is not None else None,
"tests": [SimpleTest.from_dict(_item) for _item in obj["tests"]] if obj.get("tests") is not None else None,
"notificationRules": [NotificationRules.from_dict(_item) for _item in obj["notificationRules"]] if obj.get("notificationRules") is not None else None,
"labels": [Labels.from_dict(_item) for _item in obj["labels"]] if obj.get("labels") is not None else None,
"labels": [AgentLabel.from_dict(_item) for _item in obj["labels"]] if obj.get("labels") is not None else None,
"agentType": obj.get("agentType"),
"_links": SelfLinks.from_dict(obj["_links"]) if obj.get("_links") is not None else None
})

View File

@ -21,12 +21,12 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, Strict
from typing import Any, ClassVar, Dict, List, Optional
from typing_extensions import Annotated
from thousandeyes_sdk.agents.models.account_group import AccountGroup
from thousandeyes_sdk.agents.models.agent_label import AgentLabel
from thousandeyes_sdk.agents.models.cluster_member import ClusterMember
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.error_detail import ErrorDetail
from thousandeyes_sdk.agents.models.interface_ip_mapping import InterfaceIpMapping
from thousandeyes_sdk.agents.models.labels import Labels
from thousandeyes_sdk.agents.models.notification_rules import NotificationRules
from thousandeyes_sdk.agents.models.self_links import SelfLinks
from thousandeyes_sdk.agents.models.simple_test import SimpleTest
@ -62,7 +62,7 @@ class EnterpriseAgentDetail(BaseModel):
interface_ip_mappings: Optional[List[InterfaceIpMapping]] = Field(default=None, alias="interfaceIpMappings")
tests: Optional[List[SimpleTest]] = Field(default=None, description="List of tests. See `/tests` for more information.")
notification_rules: Optional[List[NotificationRules]] = Field(default=None, description="List of notification rule objects configured on agent", alias="notificationRules")
labels: Optional[List[Labels]] = 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")
links: Optional[SelfLinks] = Field(default=None, alias="_links")
__properties: ClassVar[List[str]] = ["ipAddresses", "publicIpAddresses", "network", "agentId", "agentName", "location", "countryId", "enabled", "prefix", "verifySslCertificates", "clusterMembers", "utilization", "accountGroups", "ipv6Policy", "errorDetails", "hostname", "lastSeen", "agentState", "keepBrowserCache", "createdDate", "targetForTests", "localResolutionPrefixes", "interfaceIpMappings", "tests", "notificationRules", "labels", "agentType", "_links"]
@ -235,7 +235,7 @@ class EnterpriseAgentDetail(BaseModel):
"interfaceIpMappings": [InterfaceIpMapping.from_dict(_item) for _item in obj["interfaceIpMappings"]] if obj.get("interfaceIpMappings") is not None else None,
"tests": [SimpleTest.from_dict(_item) for _item in obj["tests"]] if obj.get("tests") is not None else None,
"notificationRules": [NotificationRules.from_dict(_item) for _item in obj["notificationRules"]] if obj.get("notificationRules") is not None else None,
"labels": [Labels.from_dict(_item) for _item in obj["labels"]] if obj.get("labels") is not None else None,
"labels": [AgentLabel.from_dict(_item) for _item in obj["labels"]] if obj.get("labels") is not None else None,
"agentType": obj.get("agentType"),
"_links": SelfLinks.from_dict(obj["_links"]) if obj.get("_links") is not None else None
})

View File

@ -28,10 +28,15 @@ class EnterpriseAgentIpv6Policy(str, Enum):
FORCE_MINUS_IPV4 = 'force-ipv4'
PREFER_MINUS_IPV6 = 'prefer-ipv6'
FORCE_MINUS_IPV6 = 'force-ipv6'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of EnterpriseAgentIpv6Policy from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -18,7 +18,7 @@ import json
from pydantic import BaseModel, ConfigDict, Field
from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.agents.models.labels import Labels
from thousandeyes_sdk.agents.models.agent_label import AgentLabel
from thousandeyes_sdk.agents.models.notification_rules import NotificationRules
from thousandeyes_sdk.agents.models.simple_test import SimpleTest
from typing import Optional, Set
@ -30,7 +30,7 @@ class EnterpriseAgentResponseExpands(BaseModel):
""" # noqa: E501
tests: Optional[List[SimpleTest]] = Field(default=None, description="List of tests. See `/tests` for more information.")
notification_rules: Optional[List[NotificationRules]] = Field(default=None, description="List of notification rule objects configured on agent", alias="notificationRules")
labels: Optional[List[Labels]] = 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.")
__properties: ClassVar[List[str]] = ["tests", "notificationRules", "labels"]
model_config = ConfigDict(
@ -110,7 +110,7 @@ class EnterpriseAgentResponseExpands(BaseModel):
_obj = cls.model_validate({
"tests": [SimpleTest.from_dict(_item) for _item in obj["tests"]] if obj.get("tests") is not None else None,
"notificationRules": [NotificationRules.from_dict(_item) for _item in obj["notificationRules"]] if obj.get("notificationRules") is not None else None,
"labels": [Labels.from_dict(_item) for _item in obj["labels"]] if obj.get("labels") is not None else None
"labels": [AgentLabel.from_dict(_item) for _item in obj["labels"]] if obj.get("labels") is not None else None
})
return _obj

View File

@ -28,10 +28,15 @@ class EnterpriseAgentState(str, Enum):
ONLINE = 'online'
OFFLINE = 'offline'
DISABLED = 'disabled'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of EnterpriseAgentState from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -33,10 +33,15 @@ class ErrorDetailCode(str, Enum):
OS_MINUS_END_MINUS_OF_MINUS_SUPPORT = 'os-end-of-support'
OS_MINUS_END_MINUS_OF_MINUS_LIFE = 'os-end-of-life'
NAT_MINUS_TRAVERSAL_MINUS_ERROR = 'nat-traversal-error'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of ErrorDetailCode from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -18,8 +18,8 @@ import json
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.agents.models.agent import Agent
from thousandeyes_sdk.agents.models.notification import Notification
from thousandeyes_sdk.agents.models.agent_notification import AgentNotification
from thousandeyes_sdk.agents.models.agent_response import AgentResponse
from thousandeyes_sdk.agents.models.self_links import SelfLinks
from typing import Optional, Set
from typing_extensions import Self
@ -33,8 +33,8 @@ class NotificationRuleDetail(BaseModel):
expression: Optional[StrictStr] = Field(default=None, description="Expression of agent notification rule")
notify_on_clear: Optional[StrictBool] = Field(default=None, description="Send notification when notification clears", alias="notifyOnClear")
is_default: Optional[StrictBool] = Field(default=None, description="Agent notification rule will be automatically included on all new Enterprise Agents.", alias="isDefault")
notifications: Optional[Notification] = None
agents: Optional[List[Agent]] = None
notifications: Optional[AgentNotification] = None
agents: Optional[List[AgentResponse]] = None
links: Optional[SelfLinks] = Field(default=None, alias="_links")
__properties: ClassVar[List[str]] = ["ruleId", "ruleName", "expression", "notifyOnClear", "isDefault", "notifications", "agents", "_links"]
@ -110,8 +110,8 @@ class NotificationRuleDetail(BaseModel):
"expression": obj.get("expression"),
"notifyOnClear": obj.get("notifyOnClear"),
"isDefault": obj.get("isDefault"),
"notifications": Notification.from_dict(obj["notifications"]) if obj.get("notifications") is not None else None,
"agents": [Agent.from_dict(_item) for _item in obj["agents"]] if obj.get("agents") is not None else None,
"notifications": AgentNotification.from_dict(obj["notifications"]) if obj.get("notifications") is not None else None,
"agents": [AgentResponse.from_dict(_item) for _item in obj["agents"]] if obj.get("agents") is not None else None,
"_links": SelfLinks.from_dict(obj["_links"]) if obj.get("_links") is not None else None
})
return _obj

View File

@ -35,4 +35,8 @@ class ProxyAuthType(str, Enum):
"""Create an instance of ProxyAuthType from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -27,10 +27,15 @@ class ProxyType(str, Enum):
"""
STATIC = 'static'
PAC = 'pac'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of ProxyType from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -32,10 +32,15 @@ class TestInterval(int, Enum):
NUMBER_900 = 900
NUMBER_1800 = 1800
NUMBER_3600 = 3600
NUMBER_11184809 = 11184809
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of TestInterval from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -38,10 +38,15 @@ class TestType(str, Enum):
DNSSEC = 'dnssec'
SIP_MINUS_SERVER = 'sip-server'
VOICE = 'voice'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of TestType from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -16,14 +16,14 @@ import unittest
import thousandeyes_sdk.agents.models
from .test_utils import assert_constructed_model_matches_example_json
from thousandeyes_sdk.agents.api.proxies_api import ProxiesApi
from thousandeyes_sdk.agents.api.agent_proxies_api import AgentProxiesApi
class TestProxiesApi(unittest.TestCase):
"""ProxiesApi unit test stubs"""
class TestAgentProxiesApi(unittest.TestCase):
"""AgentProxiesApi unit test stubs"""
def setUp(self) -> None:
self.api = ProxiesApi()
self.api = AgentProxiesApi()
def tearDown(self) -> None:
pass

View File

@ -89,7 +89,7 @@ class TestCloudAndEnterpriseAgentsApi(unittest.TestCase):
"createdDate" : "2022-07-17T22:00:54Z",
"createdBy" : "user@user.com",
"modifiedDate" : "2022-07-17T22:00:54Z",
"interval" : 120,
"interval" : 60,
"modifiedBy" : "user@user.com",
"testId" : "281474976710706",
"alertsEnabled" : true,
@ -120,7 +120,7 @@ class TestCloudAndEnterpriseAgentsApi(unittest.TestCase):
"createdDate" : "2022-07-17T22:00:54Z",
"createdBy" : "user@user.com",
"modifiedDate" : "2022-07-17T22:00:54Z",
"interval" : 120,
"interval" : 60,
"modifiedBy" : "user@user.com",
"testId" : "281474976710706",
"alertsEnabled" : true,
@ -256,7 +256,7 @@ class TestCloudAndEnterpriseAgentsApi(unittest.TestCase):
"createdDate" : "2022-07-17T22:00:54Z",
"createdBy" : "user@user.com",
"modifiedDate" : "2022-07-17T22:00:54Z",
"interval" : 120,
"interval" : 60,
"modifiedBy" : "user@user.com",
"testId" : "281474976710706",
"alertsEnabled" : true,
@ -287,7 +287,7 @@ class TestCloudAndEnterpriseAgentsApi(unittest.TestCase):
"createdDate" : "2022-07-17T22:00:54Z",
"createdBy" : "user@user.com",
"modifiedDate" : "2022-07-17T22:00:54Z",
"interval" : 120,
"interval" : 60,
"modifiedBy" : "user@user.com",
"testId" : "281474976710706",
"alertsEnabled" : true,

View File

@ -93,7 +93,7 @@ class TestEnterpriseAgentClusterApi(unittest.TestCase):
"createdDate" : "2022-07-17T22:00:54Z",
"createdBy" : "user@user.com",
"modifiedDate" : "2022-07-17T22:00:54Z",
"interval" : 120,
"interval" : 60,
"modifiedBy" : "user@user.com",
"testId" : "281474976710706",
"alertsEnabled" : true,
@ -124,7 +124,7 @@ class TestEnterpriseAgentClusterApi(unittest.TestCase):
"createdDate" : "2022-07-17T22:00:54Z",
"createdBy" : "user@user.com",
"modifiedDate" : "2022-07-17T22:00:54Z",
"interval" : 120,
"interval" : 60,
"modifiedBy" : "user@user.com",
"testId" : "281474976710706",
"alertsEnabled" : true,

View File

@ -7,6 +7,7 @@ docs/AlertDirection.md
docs/AlertLinks.md
docs/AlertMeta.md
docs/AlertMetricDetail.md
docs/AlertNotification.md
docs/AlertRoundsViolationMode.md
docs/AlertRule.md
docs/AlertRulesApi.md
@ -29,11 +30,10 @@ docs/EndAlertMetrics.md
docs/EndRepeat.md
docs/EndRepeatType.md
docs/Error.md
docs/Expand.md
docs/ExpandAlertTestOptions.md
docs/IntervalType.md
docs/LegacyAlert.md
docs/Link.md
docs/Notification.md
docs/NotificationCustomWebhook.md
docs/NotificationEmail.md
docs/NotificationThirdParty.md
@ -71,6 +71,7 @@ src/thousandeyes_sdk/alerts/models/alert_direction.py
src/thousandeyes_sdk/alerts/models/alert_links.py
src/thousandeyes_sdk/alerts/models/alert_meta.py
src/thousandeyes_sdk/alerts/models/alert_metric_detail.py
src/thousandeyes_sdk/alerts/models/alert_notification.py
src/thousandeyes_sdk/alerts/models/alert_rounds_violation_mode.py
src/thousandeyes_sdk/alerts/models/alert_rule.py
src/thousandeyes_sdk/alerts/models/alert_suppression_window.py
@ -90,11 +91,10 @@ src/thousandeyes_sdk/alerts/models/end_alert_metrics.py
src/thousandeyes_sdk/alerts/models/end_repeat.py
src/thousandeyes_sdk/alerts/models/end_repeat_type.py
src/thousandeyes_sdk/alerts/models/error.py
src/thousandeyes_sdk/alerts/models/expand.py
src/thousandeyes_sdk/alerts/models/expand_alert_test_options.py
src/thousandeyes_sdk/alerts/models/interval_type.py
src/thousandeyes_sdk/alerts/models/legacy_alert.py
src/thousandeyes_sdk/alerts/models/link.py
src/thousandeyes_sdk/alerts/models/notification.py
src/thousandeyes_sdk/alerts/models/notification_custom_webhook.py
src/thousandeyes_sdk/alerts/models/notification_email.py
src/thousandeyes_sdk/alerts/models/notification_third_party.py

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:
- API version: 7.0.15
- API version: 7.0.19
- Generator version: 7.6.0
- Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator
@ -126,6 +126,7 @@ Class | Method | HTTP request | Description
- [AlertLinks](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/AlertLinks.md)
- [AlertMeta](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/AlertMeta.md)
- [AlertMetricDetail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/AlertMetricDetail.md)
- [AlertNotification](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/AlertNotification.md)
- [AlertRoundsViolationMode](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/AlertRoundsViolationMode.md)
- [AlertRule](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/AlertRule.md)
- [AlertSuppressionWindow](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/AlertSuppressionWindow.md)
@ -145,11 +146,10 @@ Class | Method | HTTP request | Description
- [EndRepeat](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/EndRepeat.md)
- [EndRepeatType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/EndRepeatType.md)
- [Error](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/Error.md)
- [Expand](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/Expand.md)
- [ExpandAlertTestOptions](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/ExpandAlertTestOptions.md)
- [IntervalType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/IntervalType.md)
- [LegacyAlert](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/LegacyAlert.md)
- [Link](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/Link.md)
- [Notification](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/Notification.md)
- [NotificationCustomWebhook](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/NotificationCustomWebhook.md)
- [NotificationEmail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/NotificationEmail.md)
- [NotificationThirdParty](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-alerts/docs/NotificationThirdParty.md)

View File

@ -7,8 +7,8 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **str** | A unique ID for each individual alert occurrence. | [optional] [readonly]
**alert_type** | [**AlertType**](AlertType.md) | | [optional]
**start_date** | **datetime** | The start date and time (in UTC, ISO 8601 format) for querying alerts. | [optional] [readonly]
**end_date** | **datetime** | The end date and time (in UTC, ISO 8601 format) for querying alerts. | [optional] [readonly]
**start_date** | **datetime** | (Optional) When passing `window` or `startDate` parameter, the client will also receive the `startDate` field indicating the UTC start date of the data's time range being retrieved (ISO date-time format). | [optional] [readonly]
**end_date** | **datetime** | (Optional) When passing `window` or `endDate` parameter, the client will also receive the `endDate` field indicating the UTC end date of the data's time range being retrieved (ISO date-time format). | [optional] [readonly]
**violation_count** | **int** | Number of sources that meet the alert criteria. | [optional]
**duration** | **int** | Duration in seconds the alert was active | [optional]
**suppressed** | **bool** | Indicates whether the alert is currently suppressed by a real-time ASW. | [optional]

View File

@ -7,8 +7,8 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **str** | A unique ID for each individual alert occurrence. | [optional] [readonly]
**alert_type** | [**AlertType**](AlertType.md) | | [optional]
**start_date** | **datetime** | The start date and time (in UTC, ISO 8601 format) for querying alerts. | [optional] [readonly]
**end_date** | **datetime** | The end date and time (in UTC, ISO 8601 format) for querying alerts. | [optional] [readonly]
**start_date** | **datetime** | (Optional) When passing `window` or `startDate` parameter, the client will also receive the `startDate` field indicating the UTC start date of the data's time range being retrieved (ISO date-time format). | [optional] [readonly]
**end_date** | **datetime** | (Optional) When passing `window` or `endDate` parameter, the client will also receive the `endDate` field indicating the UTC end date of the data's time range being retrieved (ISO date-time format). | [optional] [readonly]
**violation_count** | **int** | Number of sources that meet the alert criteria. | [optional]
**duration** | **int** | Duration in seconds the alert was active | [optional]
**suppressed** | **bool** | Indicates whether the alert is currently suppressed by a real-time ASW. | [optional]

View File

@ -1,4 +1,4 @@
# Notification
# AlertNotification
Alert notification object. See Alert notification integrations.
@ -14,19 +14,19 @@ Name | Type | Description | Notes
## Example
```python
from thousandeyes_sdk.alerts.models.notification import Notification
from thousandeyes_sdk.alerts.models.alert_notification import AlertNotification
# TODO update the JSON string below
json = "{}"
# create an instance of Notification from a JSON string
notification_instance = Notification.from_json(json)
# create an instance of AlertNotification from a JSON string
alert_notification_instance = AlertNotification.from_json(json)
# print the JSON string representation of the object
print(Notification.to_json())
print(AlertNotification.to_json())
# convert the object into a dict
notification_dict = notification_instance.to_dict()
# create an instance of Notification from a dict
notification_from_dict = Notification.from_dict(notification_dict)
alert_notification_dict = alert_notification_instance.to_dict()
# create an instance of AlertNotification from a dict
alert_notification_from_dict = AlertNotification.from_dict(alert_notification_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

@ -26,7 +26,7 @@ Creates a new alert suppression window in ThousandEyes, using the provided POST
import thousandeyes_sdk.alerts
from thousandeyes_sdk.alerts.models.alert_suppression_window_detail import AlertSuppressionWindowDetail
from thousandeyes_sdk.alerts.models.alert_suppression_window_request import AlertSuppressionWindowRequest
from thousandeyes_sdk.alerts.models.expand import Expand
from thousandeyes_sdk.alerts.models.expand_alert_test_options import ExpandAlertTestOptions
from thousandeyes_sdk.alerts.rest import ApiException
from pprint import pprint
@ -52,7 +52,7 @@ with thousandeyes_sdk.alerts.ApiClient(configuration) as api_client:
api_instance = thousandeyes_sdk.alerts.AlertSuppressionWindowsApi(api_client)
alert_suppression_window_request = thousandeyes_sdk.alerts.AlertSuppressionWindowRequest() # AlertSuppressionWindowRequest |
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)
expand = [thousandeyes_sdk.alerts.Expand()] # List[Expand] | Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query. (optional)
expand = [thousandeyes_sdk.alerts.ExpandAlertTestOptions()] # List[ExpandAlertTestOptions] | Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query. (optional)
try:
# Create alert suppression window
@ -72,7 +72,7 @@ Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**alert_suppression_window_request** | [**AlertSuppressionWindowRequest**](AlertSuppressionWindowRequest.md)| |
**aid** | **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]
**expand** | [**List[Expand]**](Expand.md)| Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query. | [optional]
**expand** | [**List[ExpandAlertTestOptions]**](ExpandAlertTestOptions.md)| Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query. | [optional]
### Return type
@ -198,7 +198,7 @@ Returns detailed information about an alert suppression window configured in you
```python
import thousandeyes_sdk.alerts
from thousandeyes_sdk.alerts.models.alert_suppression_window_detail import AlertSuppressionWindowDetail
from thousandeyes_sdk.alerts.models.expand import Expand
from thousandeyes_sdk.alerts.models.expand_alert_test_options import ExpandAlertTestOptions
from thousandeyes_sdk.alerts.rest import ApiException
from pprint import pprint
@ -224,7 +224,7 @@ with thousandeyes_sdk.alerts.ApiClient(configuration) as api_client:
api_instance = thousandeyes_sdk.alerts.AlertSuppressionWindowsApi(api_client)
window_id = '2411' # str | Unique window ID.
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)
expand = [thousandeyes_sdk.alerts.Expand()] # List[Expand] | Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query. (optional)
expand = [thousandeyes_sdk.alerts.ExpandAlertTestOptions()] # List[ExpandAlertTestOptions] | Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query. (optional)
try:
# Retrieve alert suppression window
@ -244,7 +244,7 @@ Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**window_id** | **str**| Unique window ID. |
**aid** | **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]
**expand** | [**List[Expand]**](Expand.md)| Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query. | [optional]
**expand** | [**List[ExpandAlertTestOptions]**](ExpandAlertTestOptions.md)| Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query. | [optional]
### Return type
@ -370,7 +370,7 @@ Updates an alert suppression window in ThousandEyes, using the provided POST da
import thousandeyes_sdk.alerts
from thousandeyes_sdk.alerts.models.alert_suppression_window_detail import AlertSuppressionWindowDetail
from thousandeyes_sdk.alerts.models.alert_suppression_window_request import AlertSuppressionWindowRequest
from thousandeyes_sdk.alerts.models.expand import Expand
from thousandeyes_sdk.alerts.models.expand_alert_test_options import ExpandAlertTestOptions
from thousandeyes_sdk.alerts.rest import ApiException
from pprint import pprint
@ -397,7 +397,7 @@ with thousandeyes_sdk.alerts.ApiClient(configuration) as api_client:
window_id = '2411' # str | Unique window ID.
alert_suppression_window_request = thousandeyes_sdk.alerts.AlertSuppressionWindowRequest() # AlertSuppressionWindowRequest |
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)
expand = [thousandeyes_sdk.alerts.Expand()] # List[Expand] | Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query. (optional)
expand = [thousandeyes_sdk.alerts.ExpandAlertTestOptions()] # List[ExpandAlertTestOptions] | Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query. (optional)
try:
# Update alert suppression window
@ -418,7 +418,7 @@ Name | Type | Description | Notes
**window_id** | **str**| Unique window ID. |
**alert_suppression_window_request** | [**AlertSuppressionWindowRequest**](AlertSuppressionWindowRequest.md)| |
**aid** | **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]
**expand** | [**List[Expand]**](Expand.md)| Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query. | [optional]
**expand** | [**List[ExpandAlertTestOptions]**](ExpandAlertTestOptions.md)| Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query. | [optional]
### Return type

View File

@ -7,8 +7,8 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **str** | A unique ID for each individual alert occurrence. | [optional] [readonly]
**alert_type** | [**AlertType**](AlertType.md) | | [optional]
**start_date** | **datetime** | The start date and time (in UTC, ISO 8601 format) for querying alerts. | [optional] [readonly]
**end_date** | **datetime** | The end date and time (in UTC, ISO 8601 format) for querying alerts. | [optional] [readonly]
**start_date** | **datetime** | (Optional) When passing `window` or `startDate` parameter, the client will also receive the `startDate` field indicating the UTC start date of the data's time range being retrieved (ISO date-time format). | [optional] [readonly]
**end_date** | **datetime** | (Optional) When passing `window` or `endDate` parameter, the client will also receive the `endDate` field indicating the UTC end date of the data's time range being retrieved (ISO date-time format). | [optional] [readonly]
**violation_count** | **int** | Number of sources that meet the alert criteria. | [optional]
**duration** | **int** | Duration in seconds the alert was active | [optional]
**suppressed** | **bool** | Indicates whether the alert is currently suppressed by a real-time ASW. | [optional]

View File

@ -0,0 +1,11 @@
# ExpandAlertTestOptions
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -20,7 +20,7 @@ Name | Type | Description | Notes
**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]
**severity** | [**Severity**](Severity.md) | | [optional]
**notifications** | [**Notification**](Notification.md) | | [optional]
**notifications** | [**AlertNotification**](AlertNotification.md) | | [optional]
**test_ids** | **List[str]** | Array of test IDs to link to alert rule (get `testId` from `/tests` endpoint). | [optional]
**links** | [**SelfLinks**](SelfLinks.md) | | [optional]

View File

@ -20,7 +20,7 @@ Name | Type | Description | Notes
**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]
**severity** | [**Severity**](Severity.md) | | [optional]
**notifications** | [**Notification**](Notification.md) | | [optional]
**notifications** | [**AlertNotification**](AlertNotification.md) | | [optional]
**tests** | [**List[BaseTest]**](BaseTest.md) | | [optional] [readonly]
**links** | [**SelfLinks**](SelfLinks.md) | | [optional]

View File

@ -20,7 +20,7 @@ Name | Type | Description | Notes
**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]
**severity** | [**Severity**](Severity.md) | | [optional]
**notifications** | [**Notification**](Notification.md) | | [optional]
**notifications** | [**AlertNotification**](AlertNotification.md) | | [optional]
**test_ids** | **List[str]** | Array of test IDs to link to alert rule (get `testId` from `/tests` endpoint). | [optional]
## Example

View File

@ -9,9 +9,9 @@ description = "ThousandEyes SDK Alerts API"
license = { file = "LICENSE" }
requires-python = ">= 3.8"
dependencies = [
"urllib3 >= 1.25.3",
"urllib3 >= 2.0.0",
"python-dateutil >=2.8.2",
"pydantic >=2",
"pydantic >=2.1.0",
"typing-extensions >=4.7.1",
"thousandeyes-sdk-core",
]

View File

@ -26,6 +26,7 @@ from thousandeyes_sdk.alerts.models.alert_direction import AlertDirection
from thousandeyes_sdk.alerts.models.alert_links import AlertLinks
from thousandeyes_sdk.alerts.models.alert_meta import AlertMeta
from thousandeyes_sdk.alerts.models.alert_metric_detail import AlertMetricDetail
from thousandeyes_sdk.alerts.models.alert_notification import AlertNotification
from thousandeyes_sdk.alerts.models.alert_rounds_violation_mode import AlertRoundsViolationMode
from thousandeyes_sdk.alerts.models.alert_rule import AlertRule
from thousandeyes_sdk.alerts.models.alert_suppression_window import AlertSuppressionWindow
@ -45,11 +46,10 @@ from thousandeyes_sdk.alerts.models.end_alert_metrics import EndAlertMetrics
from thousandeyes_sdk.alerts.models.end_repeat import EndRepeat
from thousandeyes_sdk.alerts.models.end_repeat_type import EndRepeatType
from thousandeyes_sdk.alerts.models.error import Error
from thousandeyes_sdk.alerts.models.expand import Expand
from thousandeyes_sdk.alerts.models.expand_alert_test_options import ExpandAlertTestOptions
from thousandeyes_sdk.alerts.models.interval_type import IntervalType
from thousandeyes_sdk.alerts.models.legacy_alert import LegacyAlert
from thousandeyes_sdk.alerts.models.link import Link
from thousandeyes_sdk.alerts.models.notification import Notification
from thousandeyes_sdk.alerts.models.notification_custom_webhook import NotificationCustomWebhook
from thousandeyes_sdk.alerts.models.notification_email import NotificationEmail
from thousandeyes_sdk.alerts.models.notification_third_party import NotificationThirdParty

View File

@ -24,7 +24,7 @@ from typing_extensions import Annotated
from thousandeyes_sdk.alerts.models.alert_suppression_window_detail import AlertSuppressionWindowDetail
from thousandeyes_sdk.alerts.models.alert_suppression_window_request import AlertSuppressionWindowRequest
from thousandeyes_sdk.alerts.models.alert_suppression_windows import AlertSuppressionWindows
from thousandeyes_sdk.alerts.models.expand import Expand
from thousandeyes_sdk.alerts.models.expand_alert_test_options import ExpandAlertTestOptions
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse
@ -50,7 +50,7 @@ class AlertSuppressionWindowsApi:
self,
alert_suppression_window_request: AlertSuppressionWindowRequest,
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,
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
expand: Annotated[Optional[List[ExpandAlertTestOptions]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -73,7 +73,7 @@ class AlertSuppressionWindowsApi:
: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 expand: Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.
:type expand: List[Expand]
:type expand: List[ExpandAlertTestOptions]
: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
@ -132,7 +132,7 @@ class AlertSuppressionWindowsApi:
self,
alert_suppression_window_request: AlertSuppressionWindowRequest,
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,
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
expand: Annotated[Optional[List[ExpandAlertTestOptions]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -155,7 +155,7 @@ class AlertSuppressionWindowsApi:
: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 expand: Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.
:type expand: List[Expand]
:type expand: List[ExpandAlertTestOptions]
: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
@ -214,7 +214,7 @@ class AlertSuppressionWindowsApi:
self,
alert_suppression_window_request: AlertSuppressionWindowRequest,
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,
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
expand: Annotated[Optional[List[ExpandAlertTestOptions]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -237,7 +237,7 @@ class AlertSuppressionWindowsApi:
: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 expand: Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.
:type expand: List[Expand]
:type expand: List[ExpandAlertTestOptions]
: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
@ -674,7 +674,7 @@ class AlertSuppressionWindowsApi:
self,
window_id: Annotated[StrictStr, Field(description="Unique window ID.")],
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,
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
expand: Annotated[Optional[List[ExpandAlertTestOptions]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -697,7 +697,7 @@ class AlertSuppressionWindowsApi:
: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 expand: Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.
:type expand: List[Expand]
:type expand: List[ExpandAlertTestOptions]
: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
@ -755,7 +755,7 @@ class AlertSuppressionWindowsApi:
self,
window_id: Annotated[StrictStr, Field(description="Unique window ID.")],
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,
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
expand: Annotated[Optional[List[ExpandAlertTestOptions]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -778,7 +778,7 @@ class AlertSuppressionWindowsApi:
: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 expand: Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.
:type expand: List[Expand]
:type expand: List[ExpandAlertTestOptions]
: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
@ -836,7 +836,7 @@ class AlertSuppressionWindowsApi:
self,
window_id: Annotated[StrictStr, Field(description="Unique window ID.")],
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,
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
expand: Annotated[Optional[List[ExpandAlertTestOptions]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -859,7 +859,7 @@ class AlertSuppressionWindowsApi:
: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 expand: Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.
:type expand: List[Expand]
:type expand: List[ExpandAlertTestOptions]
: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
@ -1266,7 +1266,7 @@ class AlertSuppressionWindowsApi:
window_id: Annotated[StrictStr, Field(description="Unique window ID.")],
alert_suppression_window_request: AlertSuppressionWindowRequest,
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,
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
expand: Annotated[Optional[List[ExpandAlertTestOptions]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -1291,7 +1291,7 @@ class AlertSuppressionWindowsApi:
: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 expand: Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.
:type expand: List[Expand]
:type expand: List[ExpandAlertTestOptions]
: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
@ -1352,7 +1352,7 @@ class AlertSuppressionWindowsApi:
window_id: Annotated[StrictStr, Field(description="Unique window ID.")],
alert_suppression_window_request: AlertSuppressionWindowRequest,
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,
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
expand: Annotated[Optional[List[ExpandAlertTestOptions]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -1377,7 +1377,7 @@ class AlertSuppressionWindowsApi:
: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 expand: Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.
:type expand: List[Expand]
:type expand: List[ExpandAlertTestOptions]
: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
@ -1438,7 +1438,7 @@ class AlertSuppressionWindowsApi:
window_id: Annotated[StrictStr, Field(description="Unique window ID.")],
alert_suppression_window_request: AlertSuppressionWindowRequest,
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,
expand: Annotated[Optional[List[Expand]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
expand: Annotated[Optional[List[ExpandAlertTestOptions]], Field(description="Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.")] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@ -1463,7 +1463,7 @@ class AlertSuppressionWindowsApi:
: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 expand: Optional parameter on whether or not to expand alert related resources. Without this parameter, there's no default expansion. For example, to expand the \"tests\" resource, use the `?expand=test` query.
:type expand: List[Expand]
:type expand: List[ExpandAlertTestOptions]
: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

View File

@ -19,6 +19,7 @@ from thousandeyes_sdk.alerts.models.alert_direction import AlertDirection
from thousandeyes_sdk.alerts.models.alert_links import AlertLinks
from thousandeyes_sdk.alerts.models.alert_meta import AlertMeta
from thousandeyes_sdk.alerts.models.alert_metric_detail import AlertMetricDetail
from thousandeyes_sdk.alerts.models.alert_notification import AlertNotification
from thousandeyes_sdk.alerts.models.alert_rounds_violation_mode import AlertRoundsViolationMode
from thousandeyes_sdk.alerts.models.alert_rule import AlertRule
from thousandeyes_sdk.alerts.models.alert_suppression_window import AlertSuppressionWindow
@ -38,11 +39,10 @@ from thousandeyes_sdk.alerts.models.end_alert_metrics import EndAlertMetrics
from thousandeyes_sdk.alerts.models.end_repeat import EndRepeat
from thousandeyes_sdk.alerts.models.end_repeat_type import EndRepeatType
from thousandeyes_sdk.alerts.models.error import Error
from thousandeyes_sdk.alerts.models.expand import Expand
from thousandeyes_sdk.alerts.models.expand_alert_test_options import ExpandAlertTestOptions
from thousandeyes_sdk.alerts.models.interval_type import IntervalType
from thousandeyes_sdk.alerts.models.legacy_alert import LegacyAlert
from thousandeyes_sdk.alerts.models.link import Link
from thousandeyes_sdk.alerts.models.notification import Notification
from thousandeyes_sdk.alerts.models.notification_custom_webhook import NotificationCustomWebhook
from thousandeyes_sdk.alerts.models.notification_email import NotificationEmail
from thousandeyes_sdk.alerts.models.notification_third_party import NotificationThirdParty

View File

@ -33,8 +33,8 @@ class Alert(BaseModel):
""" # noqa: E501
id: Optional[StrictStr] = Field(default=None, description="A unique ID for each individual alert occurrence.")
alert_type: Optional[AlertType] = Field(default=None, alias="alertType")
start_date: Optional[datetime] = Field(default=None, description="The start date and time (in UTC, ISO 8601 format) for querying alerts.", alias="startDate")
end_date: Optional[datetime] = Field(default=None, description="The end date and time (in UTC, ISO 8601 format) for querying alerts.", alias="endDate")
start_date: Optional[datetime] = Field(default=None, description="(Optional) When passing `window` or `startDate` parameter, the client will also receive the `startDate` field indicating the UTC start date of the data's time range being retrieved (ISO date-time format).", alias="startDate")
end_date: Optional[datetime] = Field(default=None, description="(Optional) When passing `window` or `endDate` parameter, the client will also receive the `endDate` field indicating the UTC end date of the data's time range being retrieved (ISO date-time format).", alias="endDate")
violation_count: Optional[StrictInt] = Field(default=None, description="Number of sources that meet the alert criteria.", alias="violationCount")
duration: Optional[StrictInt] = Field(default=None, description="Duration in seconds the alert was active")
suppressed: Optional[StrictBool] = Field(default=None, description="Indicates whether the alert is currently suppressed by a real-time ASW.")
@ -59,8 +59,8 @@ class Alert(BaseModel):
if value is None:
return value
if value not in set(['ACTIVE', 'CLEARED']):
raise ValueError("must be one of enum values ('ACTIVE', 'CLEARED')")
if value not in set(['ACTIVE', 'CLEARED', 'unknown']):
raise ValueError("must be one of enum values ('ACTIVE', 'CLEARED', 'unknown')")
return value
@field_validator('severity')

View File

@ -34,8 +34,8 @@ class AlertDetail(BaseModel):
""" # noqa: E501
id: Optional[StrictStr] = Field(default=None, description="A unique ID for each individual alert occurrence.")
alert_type: Optional[AlertType] = Field(default=None, alias="alertType")
start_date: Optional[datetime] = Field(default=None, description="The start date and time (in UTC, ISO 8601 format) for querying alerts.", alias="startDate")
end_date: Optional[datetime] = Field(default=None, description="The end date and time (in UTC, ISO 8601 format) for querying alerts.", alias="endDate")
start_date: Optional[datetime] = Field(default=None, description="(Optional) When passing `window` or `startDate` parameter, the client will also receive the `startDate` field indicating the UTC start date of the data's time range being retrieved (ISO date-time format).", alias="startDate")
end_date: Optional[datetime] = Field(default=None, description="(Optional) When passing `window` or `endDate` parameter, the client will also receive the `endDate` field indicating the UTC end date of the data's time range being retrieved (ISO date-time format).", alias="endDate")
violation_count: Optional[StrictInt] = Field(default=None, description="Number of sources that meet the alert criteria.", alias="violationCount")
duration: Optional[StrictInt] = Field(default=None, description="Duration in seconds the alert was active")
suppressed: Optional[StrictBool] = Field(default=None, description="Indicates whether the alert is currently suppressed by a real-time ASW.")

View File

@ -28,10 +28,15 @@ class AlertDirection(str, Enum):
TO_MINUS_TARGET = 'to-target'
FROM_MINUS_TARGET = 'from-target'
BIDIRECTIONAL = 'bidirectional'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of AlertDirection from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -25,7 +25,7 @@ from thousandeyes_sdk.alerts.models.notification_webhook import NotificationWebh
from typing import Optional, Set
from typing_extensions import Self
class Notification(BaseModel):
class AlertNotification(BaseModel):
"""
Alert notification object. See Alert notification integrations.
""" # noqa: E501
@ -54,7 +54,7 @@ class Notification(BaseModel):
@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Notification from a JSON string"""
"""Create an instance of AlertNotification from a JSON string"""
return cls.from_dict(json.loads(json_str))
def to_dict(self) -> Dict[str, Any]:
@ -103,7 +103,7 @@ class Notification(BaseModel):
@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of Notification from a dict"""
"""Create an instance of AlertNotification from a dict"""
if obj is None:
return None

View File

@ -28,10 +28,15 @@ class AlertRoundsViolationMode(str, Enum):
EXACT = 'exact'
ANY = 'any'
AUTO = 'auto'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of AlertRoundsViolationMode from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -28,10 +28,15 @@ class AlertSuppressionWindowState(str, Enum):
ACTIVE = 'active'
INACTIVE = 'inactive'
ENDED = 'ended'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of AlertSuppressionWindowState from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -58,4 +58,8 @@ class AlertType(str, Enum):
"""Create an instance of AlertType from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -31,8 +31,8 @@ class BaseAlert(BaseModel):
""" # noqa: E501
id: Optional[StrictStr] = Field(default=None, description="A unique ID for each individual alert occurrence.")
alert_type: Optional[AlertType] = Field(default=None, alias="alertType")
start_date: Optional[datetime] = Field(default=None, description="The start date and time (in UTC, ISO 8601 format) for querying alerts.", alias="startDate")
end_date: Optional[datetime] = Field(default=None, description="The end date and time (in UTC, ISO 8601 format) for querying alerts.", alias="endDate")
start_date: Optional[datetime] = Field(default=None, description="(Optional) When passing `window` or `startDate` parameter, the client will also receive the `startDate` field indicating the UTC start date of the data's time range being retrieved (ISO date-time format).", alias="startDate")
end_date: Optional[datetime] = Field(default=None, description="(Optional) When passing `window` or `endDate` parameter, the client will also receive the `endDate` field indicating the UTC end date of the data's time range being retrieved (ISO date-time format).", alias="endDate")
violation_count: Optional[StrictInt] = Field(default=None, description="Number of sources that meet the alert criteria.", alias="violationCount")
duration: Optional[StrictInt] = Field(default=None, description="Duration in seconds the alert was active")
suppressed: Optional[StrictBool] = Field(default=None, description="Indicates whether the alert is currently suppressed by a real-time ASW.")

View File

@ -26,10 +26,15 @@ class CustomWebhookIntegrationType(str, Enum):
allowed enum values
"""
CUSTOM_MINUS_WEBHOOK = 'custom-webhook'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of CustomWebhookIntegrationType from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -32,10 +32,15 @@ class DaysOfWeek(str, Enum):
THU = 'thu'
FRI = 'fri'
SAT = 'sat'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of DaysOfWeek from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -28,10 +28,15 @@ class EndRepeatType(str, Enum):
COUNT = 'count'
NEVER = 'never'
DATE = 'date'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of EndRepeatType from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -17,19 +17,24 @@ from enum import Enum
from typing_extensions import Self
class Expand(str, Enum):
class ExpandAlertTestOptions(str, Enum):
"""
Expand
ExpandAlertTestOptions
"""
"""
allowed enum values
"""
TEST = 'test'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of Expand from a JSON string"""
"""Create an instance of ExpandAlertTestOptions from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -28,10 +28,15 @@ class IntervalType(str, Enum):
DAY = 'day'
WEEK = 'week'
MONTH = 'month'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of IntervalType from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -41,8 +41,8 @@ class LegacyAlert(BaseModel):
if value is None:
return value
if value not in set(['ACTIVE', 'CLEARED']):
raise ValueError("must be one of enum values ('ACTIVE', 'CLEARED')")
if value not in set(['ACTIVE', 'CLEARED', 'unknown']):
raise ValueError("must be one of enum values ('ACTIVE', 'CLEARED', 'unknown')")
return value
@field_validator('severity')

View File

@ -29,10 +29,15 @@ class RepeatType(str, Enum):
WEEK = 'week'
MONTH = 'month'
CUSTOM = 'custom'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of RepeatType from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -19,9 +19,9 @@ import json
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.alerts.models.alert_direction import AlertDirection
from thousandeyes_sdk.alerts.models.alert_notification import AlertNotification
from thousandeyes_sdk.alerts.models.alert_rounds_violation_mode import AlertRoundsViolationMode
from thousandeyes_sdk.alerts.models.alert_type import AlertType
from thousandeyes_sdk.alerts.models.notification import Notification
from thousandeyes_sdk.alerts.models.self_links import SelfLinks
from thousandeyes_sdk.alerts.models.sensitivity_level import SensitivityLevel
from thousandeyes_sdk.alerts.models.severity import Severity
@ -47,7 +47,7 @@ class Rule(BaseModel):
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")
severity: Optional[Severity] = None
notifications: Optional[Notification] = None
notifications: Optional[AlertNotification] = None
test_ids: Optional[List[StrictStr]] = Field(default=None, description="Array of test IDs to link to alert rule (get `testId` from `/tests` endpoint).", alias="testIds")
links: Optional[SelfLinks] = Field(default=None, alias="_links")
__properties: ClassVar[List[str]] = ["ruleId", "ruleName", "expression", "direction", "notifyOnClear", "isDefault", "alertType", "minimumSources", "minimumSourcesPct", "roundsViolatingMode", "roundsViolatingOutOf", "roundsViolatingRequired", "includeCoveredPrefixes", "sensitivityLevel", "severity", "notifications", "testIds", "_links"]
@ -127,7 +127,7 @@ class Rule(BaseModel):
"includeCoveredPrefixes": obj.get("includeCoveredPrefixes"),
"sensitivityLevel": obj.get("sensitivityLevel"),
"severity": obj.get("severity"),
"notifications": Notification.from_dict(obj["notifications"]) if obj.get("notifications") is not None else None,
"notifications": AlertNotification.from_dict(obj["notifications"]) if obj.get("notifications") is not None else None,
"testIds": obj.get("testIds"),
"_links": SelfLinks.from_dict(obj["_links"]) if obj.get("_links") is not None else None
})

View File

@ -19,10 +19,10 @@ import json
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.alerts.models.alert_direction import AlertDirection
from thousandeyes_sdk.alerts.models.alert_notification import AlertNotification
from thousandeyes_sdk.alerts.models.alert_rounds_violation_mode import AlertRoundsViolationMode
from thousandeyes_sdk.alerts.models.alert_type import AlertType
from thousandeyes_sdk.alerts.models.base_test import BaseTest
from thousandeyes_sdk.alerts.models.notification import Notification
from thousandeyes_sdk.alerts.models.self_links import SelfLinks
from thousandeyes_sdk.alerts.models.sensitivity_level import SensitivityLevel
from thousandeyes_sdk.alerts.models.severity import Severity
@ -48,7 +48,7 @@ class RuleDetail(BaseModel):
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")
severity: Optional[Severity] = None
notifications: Optional[Notification] = None
notifications: Optional[AlertNotification] = None
tests: Optional[List[BaseTest]] = None
links: Optional[SelfLinks] = Field(default=None, alias="_links")
__properties: ClassVar[List[str]] = ["ruleId", "ruleName", "expression", "direction", "notifyOnClear", "isDefault", "alertType", "minimumSources", "minimumSourcesPct", "roundsViolatingMode", "roundsViolatingOutOf", "roundsViolatingRequired", "includeCoveredPrefixes", "sensitivityLevel", "severity", "notifications", "tests", "_links"]
@ -137,7 +137,7 @@ class RuleDetail(BaseModel):
"includeCoveredPrefixes": obj.get("includeCoveredPrefixes"),
"sensitivityLevel": obj.get("sensitivityLevel"),
"severity": obj.get("severity"),
"notifications": Notification.from_dict(obj["notifications"]) if obj.get("notifications") is not None else None,
"notifications": AlertNotification.from_dict(obj["notifications"]) if obj.get("notifications") is not None else None,
"tests": [BaseTest.from_dict(_item) for _item in obj["tests"]] if obj.get("tests") is not None else None,
"_links": SelfLinks.from_dict(obj["_links"]) if obj.get("_links") is not None else None
})

View File

@ -19,9 +19,9 @@ import json
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional
from thousandeyes_sdk.alerts.models.alert_direction import AlertDirection
from thousandeyes_sdk.alerts.models.alert_notification import AlertNotification
from thousandeyes_sdk.alerts.models.alert_rounds_violation_mode import AlertRoundsViolationMode
from thousandeyes_sdk.alerts.models.alert_type import AlertType
from thousandeyes_sdk.alerts.models.notification import Notification
from thousandeyes_sdk.alerts.models.sensitivity_level import SensitivityLevel
from thousandeyes_sdk.alerts.models.severity import Severity
from typing import Optional, Set
@ -46,7 +46,7 @@ class RuleDetailUpdate(BaseModel):
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")
severity: Optional[Severity] = None
notifications: Optional[Notification] = None
notifications: Optional[AlertNotification] = None
test_ids: Optional[List[StrictStr]] = Field(default=None, description="Array of test IDs to link to alert rule (get `testId` from `/tests` endpoint).", alias="testIds")
__properties: ClassVar[List[str]] = ["ruleId", "ruleName", "expression", "direction", "notifyOnClear", "isDefault", "alertType", "minimumSources", "minimumSourcesPct", "roundsViolatingMode", "roundsViolatingOutOf", "roundsViolatingRequired", "includeCoveredPrefixes", "sensitivityLevel", "severity", "notifications", "testIds"]
@ -122,7 +122,7 @@ class RuleDetailUpdate(BaseModel):
"includeCoveredPrefixes": obj.get("includeCoveredPrefixes"),
"sensitivityLevel": obj.get("sensitivityLevel"),
"severity": obj.get("severity"),
"notifications": Notification.from_dict(obj["notifications"]) if obj.get("notifications") is not None else None,
"notifications": AlertNotification.from_dict(obj["notifications"]) if obj.get("notifications") is not None else None,
"testIds": obj.get("testIds")
})
return _obj

View File

@ -28,10 +28,15 @@ class SensitivityLevel(str, Enum):
HIGH = 'high'
MEDIUM = 'medium'
LOW = 'low'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of SensitivityLevel from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -36,4 +36,8 @@ class Severity(str, Enum):
"""Create an instance of Severity from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -28,10 +28,15 @@ class State(str, Enum):
ACTIVE = 'active'
CLEAR = 'clear'
TRIGGER = 'trigger'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of State from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -32,10 +32,15 @@ class TestInterval(int, Enum):
NUMBER_900 = 900
NUMBER_1800 = 1800
NUMBER_3600 = 3600
NUMBER_11184809 = 11184809
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of TestInterval from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

View File

@ -28,10 +28,15 @@ class ThirdPartyIntegrationType(str, Enum):
PAGER_MINUS_DUTY = 'pager-duty'
SLACK = 'slack'
APP_MINUS_DYNAMICS = 'app-dynamics'
UNKNOWN = 'unknown'
@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of ThirdPartyIntegrationType from a JSON string"""
return cls(json.loads(json_str))
@classmethod
def _missing_(cls, value):
"""Handle unknown values"""
return cls.UNKNOWN

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