Skip to content

Commit

Permalink
Add Event detection API (#43)
Browse files Browse the repository at this point in the history
* [GitHub Bot] Generated python SDK

* Updated README

---------

Co-authored-by: API Team <api-team@thousandeyes.com>
Co-authored-by: Miguel Pragosa <mpragosa@thousandeyes.com>
  • Loading branch information
3 people authored Aug 11, 2024
1 parent 9f18f0f commit 09e9385
Show file tree
Hide file tree
Showing 95 changed files with 7,062 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ Each of the APIs being published includes a README file with instructions on how
* [credentials](/thousandeyes-sdk-credentials/README.md)
* [dashboards](/thousandeyes-sdk-dashboards/README.md)
* [emulation](/thousandeyes-sdk-emulation/README.md)
* [event-detection](/thousandeyes-sdk-event-detection/README.md)
* [endpoint-agents](/thousandeyes-sdk-endpoint-agents/README.md)
* [endpoint-instant-tests](/thousandeyes-sdk-endpoint-instant-tests/README.md)
* [endpoint-labels](/thousandeyes-sdk-endpoint-labels/README.md)
Expand Down
23 changes: 23 additions & 0 deletions thousandeyes-sdk-event-detection/.openapi-generator-ignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# OpenAPI Generator Ignore
# Generated by openapi-generator https://github.com/openapitools/openapi-generator

# Use this file to prevent files from being overwritten by the generator.
# The patterns follow closely to .gitignore or .dockerignore.

# As an example, the C# client generator defines ApiClient.cs.
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
#ApiClient.cs

# You can match any string of characters against a directory, file or extension with a single asterisk (*):
#foo/*/qux
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux

# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
#foo/**/qux
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux

# You can also negate patterns with an exclamation (!).
# For example, you can ignore all files in a docs folder with the file extension .md:
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md
92 changes: 92 additions & 0 deletions thousandeyes-sdk-event-detection/.openapi-generator/FILES
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
.openapi-generator-ignore
MANIFEST.in
README.md
docs/AffectedAgents.md
docs/AffectedCount.md
docs/AffectedTargets.md
docs/AffectedTests.md
docs/AgentLinks.md
docs/AgentLocalEventDetail.md
docs/AgentLocalEventGrouping.md
docs/ApiAffectedAgent.md
docs/ApiAffectedTarget.md
docs/ApiAffectedTest.md
docs/CloudEnterpriseAgentType.md
docs/DnsEventDetail.md
docs/DnsEventGrouping.md
docs/Error.md
docs/Event.md
docs/EventDetail.md
docs/EventDetailBase.md
docs/EventState.md
docs/EventType.md
docs/Events.md
docs/EventsApi.md
docs/Link.md
docs/NetworkEventDetail.md
docs/NetworkEventGrouping.md
docs/NetworkPopEventDetail.md
docs/PaginationNextAndSelfLinks.md
docs/ProxyEventDetail.md
docs/ProxyEventGrouping.md
docs/SelfLinks.md
docs/Severity.md
docs/SimpleEventDetail.md
docs/TargetEventDetail.md
docs/TargetEventGrouping.md
docs/TargetNetworkEventDetail.md
docs/TargetNetworkEventGrouping.md
docs/TestLinks.md
docs/TestType.md
docs/UnauthorizedError.md
docs/ValidationError.md
docs/ValidationErrorItem.md
pyproject.toml
setup.cfg
src/thousandeyes_sdk/event_detection/__init__.py
src/thousandeyes_sdk/event_detection/api/__init__.py
src/thousandeyes_sdk/event_detection/api/events_api.py
src/thousandeyes_sdk/event_detection/models/__init__.py
src/thousandeyes_sdk/event_detection/models/affected_agents.py
src/thousandeyes_sdk/event_detection/models/affected_count.py
src/thousandeyes_sdk/event_detection/models/affected_targets.py
src/thousandeyes_sdk/event_detection/models/affected_tests.py
src/thousandeyes_sdk/event_detection/models/agent_links.py
src/thousandeyes_sdk/event_detection/models/agent_local_event_detail.py
src/thousandeyes_sdk/event_detection/models/agent_local_event_grouping.py
src/thousandeyes_sdk/event_detection/models/api_affected_agent.py
src/thousandeyes_sdk/event_detection/models/api_affected_target.py
src/thousandeyes_sdk/event_detection/models/api_affected_test.py
src/thousandeyes_sdk/event_detection/models/cloud_enterprise_agent_type.py
src/thousandeyes_sdk/event_detection/models/dns_event_detail.py
src/thousandeyes_sdk/event_detection/models/dns_event_grouping.py
src/thousandeyes_sdk/event_detection/models/error.py
src/thousandeyes_sdk/event_detection/models/event.py
src/thousandeyes_sdk/event_detection/models/event_detail.py
src/thousandeyes_sdk/event_detection/models/event_detail_base.py
src/thousandeyes_sdk/event_detection/models/event_state.py
src/thousandeyes_sdk/event_detection/models/event_type.py
src/thousandeyes_sdk/event_detection/models/events.py
src/thousandeyes_sdk/event_detection/models/link.py
src/thousandeyes_sdk/event_detection/models/network_event_detail.py
src/thousandeyes_sdk/event_detection/models/network_event_grouping.py
src/thousandeyes_sdk/event_detection/models/network_pop_event_detail.py
src/thousandeyes_sdk/event_detection/models/pagination_next_and_self_links.py
src/thousandeyes_sdk/event_detection/models/proxy_event_detail.py
src/thousandeyes_sdk/event_detection/models/proxy_event_grouping.py
src/thousandeyes_sdk/event_detection/models/self_links.py
src/thousandeyes_sdk/event_detection/models/severity.py
src/thousandeyes_sdk/event_detection/models/simple_event_detail.py
src/thousandeyes_sdk/event_detection/models/target_event_detail.py
src/thousandeyes_sdk/event_detection/models/target_event_grouping.py
src/thousandeyes_sdk/event_detection/models/target_network_event_detail.py
src/thousandeyes_sdk/event_detection/models/target_network_event_grouping.py
src/thousandeyes_sdk/event_detection/models/test_links.py
src/thousandeyes_sdk/event_detection/models/test_type.py
src/thousandeyes_sdk/event_detection/models/unauthorized_error.py
src/thousandeyes_sdk/event_detection/models/validation_error.py
src/thousandeyes_sdk/event_detection/models/validation_error_item.py
src/thousandeyes_sdk/event_detection/py.typed
test/__init__.py
test/test_events_api.py
test/test_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
7.6.0
1 change: 1 addition & 0 deletions thousandeyes-sdk-event-detection/MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
include docs/*
169 changes: 169 additions & 0 deletions thousandeyes-sdk-event-detection/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
# thousandeyes-sdk-event-detection

Event detection occurs when ThousandEyes identifies that error signals related to a component (proxy, network node, AS, server etc) have deviated from the baselines established by events.
* To determine this, ThousandEyes takes the test results from all accounts groups within an organization, and analyzes that data.
* Noisy test results (those that have too many errors in a short window) are removed until they stabilize, and the rest of the results are tagged with the components associated with that test result (for example, proxy, network, or server).
* Next, any increase in failures from the test results and each component helps in determining the problem domain and which component may be at fault.
* When this failure rate increases beyond a pre-defined threshold (set by the algorithm), an event is triggered and an email notification is sent to the user (if they've enabled email alerts).

With the Events API, you can perform the following tasks on the ThousandEyes platform:
* **Retrieve Events**: Obtain a list of events and detailed information for each event. For more information about events, see [Event Detection](https://docs.thousandeyes.com/product-documentation/event-detection).


This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:

- API version: 7.0.14
- Generator version: 7.6.0
- Build package: com.thousandeyes.api.codegen.ThousandeyesPythonGenerator

## Requirements.

Python 3.8+

## Installation & Usage
### pip install

Install directly via PyPi:

```sh
pip install thousandeyes-sdk-event-detection
```
(you may need to run `pip` with root permission: `sudo pip install thousandeyes-sdk-event-detection`)

Then import the package:
```python
import thousandeyes_sdk.event_detection
```

### Setuptools

Install via [Setuptools](http://pypi.python.org/pypi/setuptools).

```sh
python setup.py install --user
```
(or `sudo python setup.py install` to install the package for all users)

Then import the package:
```python
import thousandeyes_sdk.event_detection
```

### Tests

Execute `pytest` to run the tests.

## Getting Started

Please follow the installation procedure and then run the following:

```python

import thousandeyes_sdk.core
import thousandeyes_sdk.event_detection
from thousandeyes_sdk.core.exceptions import ApiException
from pprint import pprint

# Defining the host is optional and defaults to https://api.thousandeyes.com
# See configuration.py for a list of all supported configuration parameters.
configuration = thousandeyes_sdk.core.Configuration(
host = "https://api.thousandeyes.com"
)

# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.

# Configure Bearer authorization: BearerAuth
configuration = thousandeyes_sdk.core.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)


# Enter a context with an instance of the API client
with thousandeyes_sdk.core.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = thousandeyes_sdk.event_detection.EventsApi(api_client)
id = 'e9c3bf02-a48c-4aa8-9e5f-898800d6f569' # str | Unique event 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)

try:
# Retrieve event
api_response = api_instance.get_event(id, aid=aid)
print("The response of EventsApi->get_event:\n")
pprint(api_response)
except ApiException as e:
print("Exception when calling EventsApi->get_event: %s\n" % e)

```

## Documentation for API Endpoints

All URIs are relative to *https://api.thousandeyes.com*

Class | Method | HTTP request | Description
------------ | ------------- | ------------- | -------------
*EventsApi* | [**get_event**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/EventsApi.md#get_event) | **GET** /v7/events/{id} | Retrieve event
*EventsApi* | [**get_events**](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/EventsApi.md#get_events) | **GET** /v7/events | List events


## Documentation For Models

- [AffectedAgents](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/AffectedAgents.md)
- [AffectedCount](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/AffectedCount.md)
- [AffectedTargets](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/AffectedTargets.md)
- [AffectedTests](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/AffectedTests.md)
- [AgentLinks](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/AgentLinks.md)
- [AgentLocalEventDetail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/AgentLocalEventDetail.md)
- [AgentLocalEventGrouping](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/AgentLocalEventGrouping.md)
- [ApiAffectedAgent](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/ApiAffectedAgent.md)
- [ApiAffectedTarget](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/ApiAffectedTarget.md)
- [ApiAffectedTest](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/ApiAffectedTest.md)
- [CloudEnterpriseAgentType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/CloudEnterpriseAgentType.md)
- [DnsEventDetail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/DnsEventDetail.md)
- [DnsEventGrouping](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/DnsEventGrouping.md)
- [Error](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/Error.md)
- [Event](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/Event.md)
- [EventDetail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/EventDetail.md)
- [EventDetailBase](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/EventDetailBase.md)
- [EventState](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/EventState.md)
- [EventType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/EventType.md)
- [Events](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/Events.md)
- [Link](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/Link.md)
- [NetworkEventDetail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/NetworkEventDetail.md)
- [NetworkEventGrouping](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/NetworkEventGrouping.md)
- [NetworkPopEventDetail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/NetworkPopEventDetail.md)
- [PaginationNextAndSelfLinks](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/PaginationNextAndSelfLinks.md)
- [ProxyEventDetail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/ProxyEventDetail.md)
- [ProxyEventGrouping](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/ProxyEventGrouping.md)
- [SelfLinks](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/SelfLinks.md)
- [Severity](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/Severity.md)
- [SimpleEventDetail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/SimpleEventDetail.md)
- [TargetEventDetail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/TargetEventDetail.md)
- [TargetEventGrouping](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/TargetEventGrouping.md)
- [TargetNetworkEventDetail](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/TargetNetworkEventDetail.md)
- [TargetNetworkEventGrouping](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/TargetNetworkEventGrouping.md)
- [TestLinks](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/TestLinks.md)
- [TestType](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/TestType.md)
- [UnauthorizedError](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/UnauthorizedError.md)
- [ValidationError](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/ValidationError.md)
- [ValidationErrorItem](https://github.com/thousandeyes/thousandeyes-sdk-python//tree/main/thousandeyes-sdk-event-detection/docs/ValidationErrorItem.md)


<a id="documentation-for-authorization"></a>
## Documentation For Authorization


Authentication schemes defined for the API:
<a id="BearerAuth"></a>
### BearerAuth

- **Type**: Bearer authentication


## Author

<a href="mailto:api-team@thousandeyes.com">ThousandEyes API Team </a>


31 changes: 31 additions & 0 deletions thousandeyes-sdk-event-detection/docs/AffectedAgents.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# AffectedAgents


## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**total** | **int** | The total number affected. | [optional] [readonly]
**in_account_group** | **int** | Indicates if in the affected account group. | [optional] [readonly]
**agents** | [**List[ApiAffectedAgent]**](ApiAffectedAgent.md) | List of affected agents. | [optional]

## Example

```python
from thousandeyes_sdk.event_detection.models.affected_agents import AffectedAgents

# TODO update the JSON string below
json = "{}"
# create an instance of AffectedAgents from a JSON string
affected_agents_instance = AffectedAgents.from_json(json)
# print the JSON string representation of the object
print(AffectedAgents.to_json())

# convert the object into a dict
affected_agents_dict = affected_agents_instance.to_dict()
# create an instance of AffectedAgents from a dict
affected_agents_from_dict = AffectedAgents.from_dict(affected_agents_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)


30 changes: 30 additions & 0 deletions thousandeyes-sdk-event-detection/docs/AffectedCount.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# AffectedCount


## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**total** | **int** | The total number affected. | [optional] [readonly]
**in_account_group** | **int** | Indicates if in the affected account group. | [optional] [readonly]

## Example

```python
from thousandeyes_sdk.event_detection.models.affected_count import AffectedCount

# TODO update the JSON string below
json = "{}"
# create an instance of AffectedCount from a JSON string
affected_count_instance = AffectedCount.from_json(json)
# print the JSON string representation of the object
print(AffectedCount.to_json())

# convert the object into a dict
affected_count_dict = affected_count_instance.to_dict()
# create an instance of AffectedCount from a dict
affected_count_from_dict = AffectedCount.from_dict(affected_count_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)


31 changes: 31 additions & 0 deletions thousandeyes-sdk-event-detection/docs/AffectedTargets.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# AffectedTargets


## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**total** | **int** | The total number affected. | [optional] [readonly]
**in_account_group** | **int** | Indicates if in the affected account group. | [optional] [readonly]
**targets** | [**List[ApiAffectedTarget]**](ApiAffectedTarget.md) | List of affected targets. | [optional]

## Example

```python
from thousandeyes_sdk.event_detection.models.affected_targets import AffectedTargets

# TODO update the JSON string below
json = "{}"
# create an instance of AffectedTargets from a JSON string
affected_targets_instance = AffectedTargets.from_json(json)
# print the JSON string representation of the object
print(AffectedTargets.to_json())

# convert the object into a dict
affected_targets_dict = affected_targets_instance.to_dict()
# create an instance of AffectedTargets from a dict
affected_targets_from_dict = AffectedTargets.from_dict(affected_targets_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)


Loading

0 comments on commit 09e9385

Please sign in to comment.